有没有办法在不执行SQL Server中的查询的情况下找到SQL查询错误?
例如,
Use TestDB
Select * from Employee1
考虑TestDB不包含任何名为“Employee1”的表。在这种情况下,当我们运行此查询时,我们将得到“无效对象名称Employee1 ”SQL错误。
我的问题是,在编写查询之后,有没有更好的方法来查找这些错误而不执行?
我的同事收到的评论是使用sp_describe_first_result_set系统存储过程。
答案 0 :(得分:3)
如果你有2012年及以上,你可以使用你的同事提到的sp。
如果您使用2008 R2及更少,请使用
SET FMTONLY ON;
Select * from MyTabl;
SET FMTONLY OFF;
Msg 208,Level 16,State 1,Line 3 无效的对象名称'MyTabl'。
这将执行查询但不处理任何数据。 NOEXEC仅解析查询,因此不会标记任何不存在的对象。 NOEXEC仅检查语法。所以你想要的是sp_describe_first_result_set或FMTONLY。
或者,如果你有一个选择,那么你也可以追加到1 = 2的地方。例如
SELECT *
FROM MyTabl
WHERE 1=2
给他们相同的结果 Msg 208,Level 16,State 1,Line 3 无效的对象名称'MyTabl'