Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureБаза данных SQL в Microsoft Fabric
Компилирует каждый запрос, но не выполняет его.
Соглашения о синтаксисе Transact-SQL
Синтаксис
SET NOEXEC { ON | OFF }
Замечания
Когда SET NOEXEC ВКЛЮЧЕНО, SQL Server анализирует и компилирует каждую партию операторов Transact-SQL, но не выполняет их. Когда SET NOEXEC ВЫКЛЮЧЕНО, все партии выполняются после компиляции. 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