Поделиться через


SET NOEXEC (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Компилирует каждый запрос, но не выполняет его.

Соглашения о синтаксисе Transact-SQL

Синтаксис

  
SET NOEXEC { ON | OFF }  

Замечания

Если параметр SET NOEXEC имеет значение ON, SQL Server анализирует и компилирует каждый пакет инструкций Transact-SQL, но не выполняет их. Если выполняется инструкция SET NOEXEC OFF, то все пакеты выполняются после компиляции. NOEXEC поддерживает отложенное разрешение имен; если один или несколько объектов в пакете, на которые имеются ссылки, не существуют, ошибки не будут возникать.

Выполнение инструкций в SQL Server состоит из двух этапов: компиляция и выполнение. Этот параметр полезен для проверки синтаксиса и имен объектов SQL Server в исходном коде Transact-SQL при выполнении. Он также полезен для инструкций отладки, которые, как правило, являются частью более крупного пакета инструкций.

Параметр SET NOEXEC устанавливается на этапе выполнения или запуска, но не на этапе синтаксического анализа.

Разрешения

Требуется членство в роли public.

Примеры

В следующем примере используется инструкция NOEXEC с правильным запросом, запрос с некорректным именем объекта и запрос с неверным синтаксисом.

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  

См. также

Инструкции SET (Transact-SQL)
SET SHOWPLAN_ALL (Transact-SQL)
SET SHOWPLAN_TEXT (Transact-SQL)