Transact-SQL 参考

SET NOEXEC

编译每个查询但不执行查询。

语法

SET NOEXEC { ON | OFF }

注释

当 SET NOEXEC 为 ON 时,Microsoft® SQL Server™ 编译每个批处理 Transact-SQL 语句但并不执行它们。当 SET NOEXEC 为 OFF 时,所有批处理将在编译后执行。

在 SQL Server 中,语句的执行包括两个阶段:编译和执行。该设置可用于让 SQL Server 在执行 Transact-SQL 代码时,验证代码中的语法和对象名。它也可以用于调试通常是较大的批处理语句一部分的语句。

SET NOEXEC 设置是在执行或运行时设置,而不是在分析时设置。

权限

SET NOEXEC 权限默认授予所有用户。

示例

下例在有效查询、含有无效对象名的查询以及含有不正确语法的查询中使用 NOEXEC。

USE pubs
GO
PRINT 'Valid query'
GO
-- SET NOEXEC to ON.
SET NOEXEC ON
GO
-- Inner join.
SELECT a.au_lname, a.au_fname, t.title
FROM authors a INNER JOIN titleauthor ta
   ON a.au_id = ta.au_id INNER JOIN titles t
   ON ta.title_id = t.title_id
GO
-- SET NOEXEC to OFF.
SET NOEXEC OFF
GO
PRINT 'Invalid object name'
GO
-- SET NOEXEC to ON.
SET NOEXEC ON
GO
-- Function name used is a reserved keyword.

USE pubs
GO
CREATE FUNCTION values (@storeid varchar(30))
RETURNS TABLE
AS
RETURN (SELECT title, qty
   FROM sales s, titles t
   WHERE s.stor_id = @storeid and
   t.title_id = s.title_id)
-- SET NOEXEC to OFF.
SET NOEXEC OFF
GO
PRINT 'Invalid syntax'
GO
-- SET NOEXEC to ON.
SET NOEXEC ON
GO
-- Built-in function incorrectly invoked
SELECT *
FROM fn_helpcollations()
-- Reset SET NOEXEC to OFF.
SET NOEXEC OFF
GO

请参见

SET

SET SHOWPLAN_ALL

SET SHOWPLAN_TEXT