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

Sql server 查找SQL查询错误,而不在SQL server中执行SQL查询,sql-server,sql-server-2008,Sql Server,Sql Server 2008,是否有任何方法可以在不在SQL server中执行查询的情况下查找SQL查询错误 比如说, Use TestDB Select * from Employee1 假设TestDB不包含任何名为“Employee1”的表。在本例中,当我们运行此查询时,将出现“无效的对象名Employee1”SQL错误 我的问题是,在编写查询之后,有没有更好的方法可以在不执行查询的情况下查找这些错误 我从同事那里得到的一条评论是,使用sp_descripe_first_result_set系统存储过程 如果您有2

是否有任何方法可以在不在SQL server中执行查询的情况下查找SQL查询错误

比如说,

Use TestDB
Select * from Employee1
假设TestDB不包含任何名为“Employee1”的表。在本例中,当我们运行此查询时,将出现“无效的对象名Employee1”SQL错误

我的问题是,在编写查询之后,有没有更好的方法可以在不执行查询的情况下查找这些错误


我从同事那里得到的一条评论是,使用sp_descripe_first_result_set系统存储过程

如果您有2012及以上版本,您可以使用同事提到的sp

如果您使用2008 R2及以下版本,则使用

SET FMTONLY  ON;
Select * from MyTabl;
SET FMTONLY  OFF;
Msg 208,16级,状态1,第3行 无效的对象名称“MyTable”

这将执行查询,但不处理任何数据。NOEXEC只解析查询,因此不存在的任何对象都不会被标记。NOEXEC只检查语法。所以你想要的要么是先描述,要么是结果集

或者,如果您有一个select,那么您也可以附加到where 1=2。比如说

SELECT *
FROM MyTabl
WHERE 1=2 
这给了他们同样的结果 Msg 208,16级,状态1,第3行 无效的对象名称“MyTable”