I’m executing stored procedures using SET FMTONLY ON, in order to emulate what our code generator does. However, it seems that the results are cached when executed like this, as I’m still getting a Conversion failed error from a proc that I have just dropped! This happens even when I execute the proc without SET FMTONLY ON.
Can anyone please tell me what’s going on here?
Some statements will still be executed, even with
SET FMTONLY ON. You ‘Conversion failed’ error could be from something as simple as aset variablestatement in the stored proc. For example, this returns the metadata for the first query, but throws an exception when it runs the last statement:As for running a dropped procedure, that’s a new one to me. SQL Server uses the system tables to determine the object to execute, so it doesn’t matter if the execution plan is cached for that object. If you drop it, it is deleted from the system tables, and should never be executable. Could you please query sysobjects (or sys.objects) just before you execute the procedure? I expect you’ll find that you haven’t dropped it.