Condividi tramite


SET NOEXEC (Transact-SQL)

Compila le varie query senza eseguirle.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

SET NOEXEC { ON | OFF }

Osservazioni

Quando l'opzione SET NOEXEC è impostata su ON, SQL Server compila, ma non esegue, tutti i batch delle istruzioni Transact-SQL. Quando l'opzione è impostata su OFF, tutti i batch vengono eseguiti dopo la compilazione.

L'esecuzione di istruzioni in SQL Server è composta da due fasi: compilazione ed esecuzione. Tale impostazione risulta utile per consentire la convalida in SQL Server della sintassi e dei 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 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