SET NOEXEC(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance
각 쿼리를 컴파일하지만 실행하지는 않습니다.
구문
SET NOEXEC { ON | OFF }
설명
SET NOEXEC 옵션을 ON으로 설정하면 SQL Server에서 Transact-SQL 문의 각 일괄 처리를 구문 분석하고 컴파일하지만 실행하지는 않습니다. SET NOEXEC 옵션을 OFF로 설정하면 컴파일 후 모든 일괄 처리가 실행됩니다. NOEXEC는 지연된 이름 확인을 지원합니다. 일괄 처리에서 하나 이상의 참조된 개체가 존재하지 않으면 오류가 throw되지 않습니다.
SQL Server 문의 실행은 컴파일과 실행의 두 단계로 이루어집니다. 이 설정은 SQL Server가 실행할 때 Transact-SQL 코드의 구문과 개체 이름의 유효성을 검사하도록 하는 데 유용합니다. 또한 더 큰 일괄 처리 문에 포함된 문을 디버깅할 때도 유용한 기능입니다.
SET NOEXEC 옵션은 실행 시간 또는 런타임에 설정되며, 구문 분석 시에는 설정되지 않습니다.
사용 권한
public 역할의 멤버 자격이 필요합니다.
예제
다음 예에서는 유효한 쿼리, 유효하지 않은 개체 이름이 있는 쿼리 및 잘못된 구문이 있는 쿼리에 NOEXEC
를 사용합니다.
USE AdventureWorks2022;
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 used is a reserved keyword.
USE AdventureWorks2022;
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
참고 항목
SET 문(Transact-SQL)
SET SHOWPLAN_ALL(Transact-SQL)
SET SHOWPLAN_TEXT(Transact-SQL)