我正在使用SQL Server 2008和SSMS 2012.我有一个存储过程引用一个不存在的表。编辑器在违规表上显示红色下划线以表明有问题。SQL Server:存储过程存储错误
然而,当我执行查询,我得到的消息成功完成
指令(S)。
这是非常讨厌的。我也连接到另一台机器的引擎,它遇到了同样的问题,这意味着它在服务器上,而不是ssms。数据库中是否存在某种设置来确定数据库是否检查存储过程的语法?请帮忙!
澄清: 我知道语法是错误的。问题在于,即使SSMS引用了一个不存在的表,SSMS也允许我执行CREATE或ALTER语句而不会出错。我希望它失败。通常它会,但由于某种原因,它突然停止发出错误。我想让它给我错误。我该怎么做呢?
长话短说,你不能。 [这个问题](http://stackoverflow.com/questions/8713129/sql-server-avoid-deferred-compilation)涵盖了同样的问题。 – Pondlife
我编写了一个脚本来尝试编译存储过程,并提醒我们是否有数据库更改打破了其中的任何一个,并且我发现它有时会提醒我们并且有时仍会编译。最奇怪的是,我们有一个存储过程不止一次地引用了一个删除的表,并且当试图编译时,它在一个引用上抛出一个错误,然而在修复了一个它没有错误编译的引用之后,即使这个EXACT同一张表在存储过程的其他部分被引用! 根据您的经验,您有任何见解吗? – Shock