SET NOEXEC (Transact-SQL)
Compile chaque requête sans l'exécuter.
Conventions de syntaxe de Transact-SQL
Syntaxe
SET NOEXEC { ON | OFF }
Notes
Si SET NOEXEC est défini sur ON, SQL Server 2005 compile chaque lot d'instructions Transact-SQL sans les exécuter. Si SET NOEXEC est défini sur OFF, tous les lots d'instructions 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 lot 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 en tant que membre au rôle public.
Exemple
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 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
Voir aussi
Référence
SET (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)
SET SHOWPLAN_TEXT (Transact-SQL)