SET NOEXEC (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseInstancia administrada de Azure SQLBase de datos SQL en Microsoft Fabric

Compila cada consulta, pero no la ejecuta.

Convenciones de sintaxis de Transact-SQL

Sintaxis

  
SET NOEXEC { ON | OFF }  

Comentarios

Cuando SET NOEXEC está activado, SQL Server analiza y compila cada lote de sentencias de Transact-SQL pero no las ejecuta. Cuando SET NOEXEC está DESACTIVADO, todos los lotes se ejecutan tras la compilación. NOEXEC soporta resolución diferida de nombres; Si uno o más objetos referenciados en el lote no existen, 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.

El valor de se establece en tiempo de SET NOEXEC ejecución o ejecución y 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

SET Instrucciones (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)
SET SHOWPLAN_TEXT (Transact-SQL)