Freigeben über


SET NOEXEC (Transact-SQL)

Alle Abfragen werden jeweils nur kompiliert, aber nicht ausgeführt.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

SET NOEXEC { ON | OFF }

Hinweise

Wenn SET NOEXEC auf ON festgelegt ist, kompiliert SQL Server jeden Transact-SQL-Anweisungsbatch, führt die Anweisungen jedoch nicht aus.Wenn SET NOEXEC auf OFF festgelegt ist, werden alle Batches nach der Kompilierung ausgeführt.

Die Ausführung von Anweisungen in SQL Server erfolgt in zwei Phasen: Kompilierung und Ausführung.Diese Einstellung ist hilfreich, wenn SQL Server die Syntax und Objektnamen in Transact-SQL-Code während der Ausführung überprüfen soll. Sie ist auch hilfreich, um Anweisungen zu debuggen, die normalerweise Teil eines größeren Anweisungsbatches wären.

Die Einstellung von SET NOEXEC wird zur Ausführungszeit und nicht zur Analysezeit festgelegt.

Berechtigungen

Erfordert die Mitgliedschaft in der public-Rolle.

Beispiele

Im folgenden Beispiel wird NOEXEC mit einer gültigen Abfrage, einer Abfrage mit einem ungültigen Objektnamen und einer Abfrage mit fehlerhafter Syntax verwendet.

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