SET NOEXEC (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
Compila cada consulta, pero no la ejecuta.
Convenciones de sintaxis de Transact-SQL
Sintaxis
SET NOEXEC { ON | OFF }
Comentarios
Cuando SET NOEXEC es ON, SQL Server analiza y compila cada lote de instrucciones Transact-SQL pero no las ejecuta. Cuando SET NOEXEC es OFF, todos los lotes se ejecutan después de su compilación. NOEXEC admite la resolución de nombres diferida; si no existen uno o más objetos a los que se hace referencia en el lote, no se generará ningún error.
La ejecución de instrucciones en SQL Server tiene dos fases: compilación y ejecución. Esta opción es útil para hacer que SQL Server valide la sintaxis y los nombres de objeto del código Transact-SQL durante la ejecución. También es útil para depurar instrucciones que normalmente serían parte de un lote de instrucciones mayor.
La opción SET NOEXEC se establece en tiempo de ejecución, no en tiempo de análisis.
Permisos
Debe pertenecer al rol public.
Ejemplos
El ejemplo siguiente utiliza NOEXEC
con una consulta válida, una consulta con un nombre de objeto no válido y una consulta con sintaxis incorrecta.
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
Consulte también
Instrucciones SET (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)
SET SHOWPLAN_TEXT (Transact-SQL)