SET NOEXEC(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 AdventureWorks;
GO
PRINT 'Valid query';
GO
-- SET NOEXEC to ON.
SET NOEXEC ON;
GO
-- Inner join.
SELECT e.EmployeeID, e.Title, v.Name
FROM HumanResources.Employee e
INNER JOIN Purchasing.PurchaseOrderHeader poh
ON e.EmployeeID = poh.EmployeeID
INNER JOIN Purchasing.Vendor v
ON poh.VendorID = v.VendorID;
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 AdventureWorks;
GO
CREATE FUNCTION dbo.Values(@EmployeeID INT)
RETURNS TABLE
AS
RETURN (SELECT PurchaseOrderID, TotalDue
FROM dbo.PurchaseOrderHeader
WHERE EmployeeID = @EmployeeID)
-- 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