我正在使用SET FMTONLY ON执行存储过程,以模拟我们的代码生成器所做的事情。但是,似乎像这样执行时会缓存结果,因为我仍然从刚刚删除的proc中收到转换失败错误!即使我在没有设置FMTONLY ON的情况下执行proc时,也会发生这种情况。
谁能告诉我这是怎么回事?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
即使使用,某些语句仍将执行SET FMTONLY ON。您的“转换失败”错误可能来自set variable存储过程中的一条语句。例如,这返回第一个查询的元数据,但是在运行最后一条语句时抛出异常:
SET FMTONLY on
select 1 as a
declare @a int
set @a = 'a'
至于运行删除的过程,这对我来说是一个新的过程。SQL Server使用系统表来确定要执行的对象,因此,是否为该对象缓存了执行计划都没有关系。如果删除它,将从系统表中删除它,并且永远不要执行它。您可以在执行该过程之前查询sysobjects(或sys.objects)吗?我希望您会发现您尚未删除它。