查找SQL查询错误,而不在SQL Server中执行SQL查询

时间:2015-11-13 07:41:06

标签: sql-server sql-server-2008

有没有办法在不执行SQL Server中的查询的情况下找到SQL查询错误?

例如,

Use TestDB
Select * from Employee1

考虑TestDB不包含任何名为“Employee1”的表。在这种情况下,当我们运行此查询时,我们将得到“无效对象名称Employee1 ”SQL错误。

我的问题是,在编写查询之后,有没有更好的方法来查找这些错误而不执行?

我的同事收到的评论是使用sp_describe_first_result_set系统存储过程。

1 个答案:

答案 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'