다음을 통해 공유


SET NOEXEC(Transact-SQL)

각 쿼리를 컴파일하지만 실행하지는 않습니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

SET NOEXEC { ON | OFF }

주의

SET NOEXEC 옵션을 ON으로 설정하면 SQL Server는 Transact-SQL 문의 각 일괄 처리를 컴파일하지만 실행하지는 않습니다. SET NOEXEC 옵션을 OFF로 설정하면 컴파일 후 모든 일괄 처리가 실행됩니다.

SQL Server 문의 실행은 컴파일과 실행의 두 단계로 이루어집니다. 이 옵션은 SQL Server가 구문의 유효성 및 실행 시 Transact-SQL 코드의 개체 이름 유효성을 검사하도록 할 때 사용할 수 있는 유용한 기능입니다. 또한 더 큰 일괄 처리 문에 포함된 문을 디버깅할 때도 유용한 기능입니다.

SET NOEXEC 옵션은 실행 시간 또는 런타임에 설정되며, 구문 분석 시에는 설정되지 않습니다.

사용 권한

public 역할의 멤버 자격이 필요합니다.

다음 예에서는 유효한 쿼리, 유효하지 않은 개체 이름이 있는 쿼리 및 잘못된 구문이 있는 쿼리에 NOEXEC를 사용합니다.

USE AdventureWorks2008R2;
GO
PRINT 'Valid query';
GO
-- SET NOEXEC to ON.
SET NOEXEC ON;
GO
-- Inner join.
SELECT e.BusinessEntityID, e.JobTitle, v.Name
FROM HumanResources.Employee AS e 
   INNER JOIN Purchasing.PurchaseOrderHeader AS poh
   ON e.BusinessEntityID = poh.EmployeeID
   INNER JOIN Purchasing.Vendor AS v
   ON poh.VendorID = v.BusinessEntityID;
GO
-- SET NOEXEC to OFF.
SET NOEXEC OFF;
GO

PRINT 'Invalid object name';
GO
-- SET NOEXEC to ON.
SET NOEXEC ON;
GO
-- Function name uses is a reserved keyword.
USE AdventureWorks2008R2;
GO
CREATE FUNCTION dbo.Values(@BusinessEntityID int)
RETURNS TABLE
AS
RETURN (SELECT PurchaseOrderID, TotalDue
   FROM dbo.PurchaseOrderHeader
   WHERE VendorID = @BusinessEntityID);
   
-- 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