編譯每個(gè)查詢但不執(zhí)行查詢。
SET NOEXEC { ON | OFF }
當(dāng) SET NOEXEC 為 ON 時(shí),Microsoft® SQL Server™ 編譯每個(gè)批處理 Transact-SQL 語句但并不執(zhí)行它們。當(dāng) SET NOEXEC 為 OFF 時(shí),所有批處理將在編譯后執(zhí)行。
在 SQL Server 中,語句的執(zhí)行包括兩個(gè)階段:編譯和執(zhí)行。該設(shè)置可用于讓 SQL Server 在執(zhí)行 Transact-SQL 代碼時(shí),驗(yàn)證代碼中的語法和對(duì)象名。它也可以用于調(diào)試通常是較大的批處理語句一部分的語句。
SET NOEXEC 設(shè)置是在執(zhí)行或運(yùn)行時(shí)設(shè)置,而不是在分析時(shí)設(shè)置。
SET NOEXEC 權(quán)限默認(rèn)授予所有用戶。
下例在有效查詢、含有無效對(duì)象名的查詢以及含有不正確語法的查詢中使用 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
相關(guān)文章