SET NOEXEC (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de données SQL dans Microsoft Fabric

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

Conventions de la syntaxe Transact-SQL

Syntaxe

  
SET NOEXEC { ON | OFF }  

Notes

Lorsque SET NOEXEC c’est activé, SQL Server analyse et compile chaque lot d’instructions de Transact-SQL mais ne les exécute pas. Lorsque SET NOEXEC c’est DÉSACTIVÉ, tous les lots sont exécutés après compilation. NOEXEC soutient la résolution différée des noms ; Si un ou plusieurs objets référencés dans le lot n’existent pas, aucune erreur ne sera lancée.

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.

Le paramètre est défini au moment de SET NOEXEC l’exécution ou de l’exécution et non au moment de 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 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  

Voir aussi

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