SET NOEXEC (Transact-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance
Mengkompilasi setiap kueri tetapi tidak menjalankannya.
Sintaks
SET NOEXEC { ON | OFF }
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)