Condividi tramite


SET NOEXEC (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure

Compila le varie query senza eseguirle.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

  
SET NOEXEC { ON | OFF }  

Osservazioni:

Quando l'opzione SET NOEXEC è impostata su ON, SQL Server analizza e compila ogni batch di istruzioni Transact-SQL, ma non li esegue. Quando l'opzione è impostata su OFF, tutti i batch vengono eseguiti dopo la compilazione. NOEXEC supporta la risoluzione dei nomi posticipata. Se uno o più oggetti a cui si fa riferimento nel batch non esistono, non verrà generato alcun errore.

L'esecuzione di istruzioni in SQL Server è composta da due fasi: compilazione ed esecuzione. Tale impostazione risulta utile per fare in modo che SQL Server convalidi la sintassi e i nomi di oggetto nel codice Transact-SQL in fase di esecuzione. Risulta utile inoltre per il debug di istruzioni che normalmente fanno parte di un batch di istruzioni più esteso.

L'opzione SET NOEXEC viene impostata in fase di esecuzione, non in fase di analisi.

Autorizzazioni

È richiesta l'appartenenza al ruolo public.

Esempi

Nell'esempio seguente viene utilizzata l'opzione NOEXEC con una query valida, una query che include un nome di oggetto non valido e una query con sintassi non corretta.

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  

Vedi anche

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