SET NOEXEC (Transact-SQL)

Compile chaque requête sans l'exécuter.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

SET NOEXEC { ON | OFF }

Notes

Si SET NOEXEC est défini sur ON, SQL Server compile chaque lot d'instructions Transact-SQL sans les exécuter. Si SET NOEXEC est défini sur OFF, tous les traitements sont exécutés après compilation.

L'exécution des instructions dans SQL Server se déroule en deux temps : compilation et exécution. Ainsi, SQL Server peut valider la syntaxe et les noms d'objets dans le code Transact-SQL au moment de l'exécution. Ceci permet par ailleurs de déboguer les instructions qui font généralement partie d'un traitement d'instructions beaucoup plus important.

L'option SET NOEXEC est définie lors de l'exécution, et non pas durant l'analyse.

Autorisations

Nécessite l'appartenance au rôle public.

Exemples

L'exemple suivant utilise NOEXEC avec une requête valide, avec une requête contenant un nom d'objet non valide, et enfin avec une requête dont la syntaxe est incorrecte.

USE AdventureWorks2012;
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 uses is a reserved keyword.
USE AdventureWorks2012;
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

Voir aussi

Référence

Instructions SET (Transact-SQL)

SET SHOWPLAN_ALL (Transact-SQL)

SET SHOWPLAN_TEXT (Transact-SQL)