SET NOEXEC (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Mengkompilasi setiap kueri tetapi tidak menjalankannya.

Konvensi sintaks transact-SQL

Sintaksis

  
SET NOEXEC { ON | OFF }  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Keterangan

Ketika SET NOEXEC AKTIF, SQL Server mengurai dan mengkompilasi setiap batch pernyataan Transact-SQL tetapi tidak mengeksekusinya. Ketika SET NOEXEC NONAKTIF, semua batch dijalankan setelah kompilasi. NOEXEC mendukung resolusi nama yang ditangguhkan; jika satu atau beberapa objek yang dirujuk dalam batch tidak ada, tidak ada kesalahan yang akan dilemparkan.

Eksekusi pernyataan di SQL Server memiliki dua fase: kompilasi dan eksekusi. Pengaturan ini berguna untuk meminta SQL Server memvalidasi sintaksis dan nama objek dalam kode Transact-SQL saat mengeksekusi. Ini juga berguna untuk men-debug pernyataan yang umumnya akan menjadi bagian dari batch pernyataan yang lebih besar.

Pengaturan SET NOEXEC diatur pada waktu eksekusi atau run time dan bukan pada waktu penguraian.

Izin

Memerlukan keanggotaan dalam peran publik.

Contoh

Contoh berikut menggunakan NOEXEC kueri yang valid, kueri dengan nama objek yang tidak valid, dan kueri dengan sintaks yang salah.

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  

Lihat Juga

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