SQL Server NOEXEC Komutu Nedir ?

SQL Server da NOEXEC komutu ne işe yarar sorusunu bu makalede cevaplayacağız.

SQL Server herhangi bir sorguyu iki aşamada yürütür temel anlamda , bu aşamalar  Compilation ve Execution dır. Derleme aşamasında sorgunun syntax ını ve nesne adlarını ndoğruluğunu teyid etmeyi sağlar. Default ta session ların NOEXEC ayarı OFF dur ve bu yüzden  derleme aşamasından sonra EXECUTE yani çalıştırma aşamasını gerçekleştirir.

Bunu SQLTURKIYE veritabanı altında bir demo tablo oluşturup içerisine bir kaç data basıp gerçekleştirelim.

USE SQLTURKIYE
GO
--Demo tablomuzu oluştutuyoruz.
CREATE TABLE sqltr_noExec
(
id INT,
TestColumn VARCHAR(100)
)

Şimdi ise tablomuza data basalım ,

-- Demo tablomuza data basalım.
INSERT INTO sqltr_noExec (id, TestColumn)
	VALUES (1, 'sqlturkiye.com');
GO
INSERT INTO sqltr_noExec (id, TestColumn)
	VALUES (2, '[email protected]');
GO
INSERT INTO sqltr_noExec (id, TestColumn)
	VALUES (1, '[email protected]');

Yukarıda da bahsettiğim üzere session ların default NOEXEC ayarı OFF yani direkt derlemeden sonra çalıştırma işlemine dayalı.

Tablomuza bir de SET NOEXEC OFF yani default değerini vererek bir kayıt ekleyelim ve sonra tablomuzd aki dataları kontrol edelim.

-- Demo tablomuza SET NOEXEC OFF parametresi ile data basalım.
INSERT INTO sqltr_noExec (id, TestColumn)
	VALUES (90, 'www.sqlturkiye.com');
GO

Şimdi ise tablomuzu kontrol edelim,

-- Tablomuu kontrol edelim...
SELECT * FROM sqltr_noExec se
GO

Şimdi ise ayrı bir Session da NOEXEC i ON yaparak tablomuza bir data ekleyelim ve sonucunu inceleyelim.

-- Demo tablomuza SET NOEXEC ON parametresi ile data basalım.
SET NOEXEC ON
INSERT INTO sqltr_noExec (id, TestColumn)
	VALUES (100, 'Yusuf Kahveci');
GO

SET NOEXEC ON komutu ile Derlemeden sonra EXECUTE işlemini gerçekleştirmediğini görmekteyiz. Hemen farklı bir sessionda tablomuza SELECT atalım çünkü aynı sessionda SELECT attığımızda da gelmeyecek. Peki neden diye sorar olduğunuzu duyuyorum çünkü defaultta session ın OFF olan değerini ON yaptık ve Derlemeden sonra Execute yani çalıştırma işlemini o sessionda artık gerçekleştirmeyecek taki aynı Sessionda SET NOEXEC OFF sürecini çalıştırana kadar. Bu arada bunu kendi sessionlarınızda deneyerek görebilrisiniz.

Normalde bu Insert işlemi gerçekleşmiş olsaydı tablomuzda 100 no lu Id değerine sahşp bir kayıt ile beraber toplam 5 kayıdımız olması gerekmekte. Şimdi diğer sesisondan tablomuza SELECT çekiyoruz.

-- Tablomuu kontrol edelim...
SELECT * FROM sqltr_noExec se
GO

Gördüğünüz üzere tablomuza dediğimiz gibi data eklenmemiş. Çünkü NOEXEC ON ibaresi Compilation işleminden sonra Execution işlemini gerçekleştirme anlamına gelmektedir.

Kolay Gelsin

 

2 Replies to “SQL Server NOEXEC Komutu Nedir ?”

  1. Hocam bu tarz bir süreci hiç tahmin etmemiştim. Gerçekten çok sağolun bu gibi engin bilgieri bizimle paylaşmanız ve yönlendirmenizden dolayı.

    1. Selam İlhan ,

      Genelde bilinen bir süreç değildir. Daha tekniğin dibi dediğimiz noktalardır buralar. Fakat bu tarz script ler le karşılaştığınızda buna dikkat etmeniz çok önemli. Engine hareketlerini manage ediyorusnuz bu tarz işlemlerde.

      Kolay Gelsin.

Leave a Reply

Your email address will not be published. Required fields are marked *