3

我正在使用 SQL Server 2008 和 SSMS 2012。我有一个引用不存在的表的存储过程。编辑器在有问题的表格上显示红色下划线,表示有问题。

但是,当我执行查询时,我收到了消息

命令成功完成。

这非常烦人。我还从另一台机器连接到引擎,它遇到了同样的问题,这意味着它在服务器上,而不是 ssms。数据库上是否有某种设置可以确定数据库是否检查存储过程的语法?请帮忙!

澄清: 我知道语法是错误的。问题是 SSMS 允许我执行 CREATE 或 ALTER 语句而不会出错,即使它引用了不存在的表。我希望它失败。通常它会,但由于某种原因它突然停止给出错误。我希望它给我错误。我该怎么做呢?

4

3 回答 3

2

您的语法很好,并且在您创建存储过程时进行了检查。但是,在编译存储过程之前不会检查表的存在,并且在执行存储过程时会发生这种情况。

于 2012-10-19T19:49:07.077 回答
0

发生的事情是管理工作室中的 IDE 没有刷新模式模型。由于 SSMS 的本地实例不知道该表存在,它会在表名下抛出一个红线;当您实际运行存储过程/查询时,发送到数据库的代码会正确评估并运行。

要刷新 SSMS 本地数据,请尝试按Ctrl-Shift-R,如此处所述

编辑:

您可能想查看延迟名称解析

于 2012-10-19T19:41:54.287 回答
0

CREATE或时您不会收到错误消息ALTER,但您可以在之后使用脚本检查您的 SP 是否缺少依赖项。

请在此处查看我对相关问题的回答(我只是发布一个链接以避免重复):

我正在寻找一种可靠的方法来验证 T-SQL 存储过程。有人有吗?

于 2014-12-10T11:16:37.277 回答