Sql Server set Deyimi

Herkese merhaba, Sql Server yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda set deyimi hakkında bilgi vereceğim. Hadi başlayalım !
Sql Server’da set deyimi ile birçok şey yapılabilmekte. Bunlardan en bilineni değişkene veri atama. Oluşturduğunuz bir değişkene ilk değerini atama yada değişkenin değerini değiştirmek için set deyimi kullanılmakta. Fakat set deyiminin kullanıldığı tek yer değişkenlere değer atama değil. Tarih formatını değiştirme, oturum dilini değiştirme, sorgulardan sonra x rows affeceted şeklinde çıkan nocount değerini değiştirme, sorguların çalıştırılmasındaki I/O işlemleri hakkında bilgi gösterme gibi birçok yerde kullanılmakta ve set ile yaptığınız değişiklikler ilgili oturumda geçerli olur, farklı bir oturuma geçtiğinizde yapmış olduğunuz değişiklikler silinecek ve Sql Server’ın ön tanımlı bilgileri kullanılacaktır. Farklı bir oturuma geçmekten kastım şu; Sql Server Management Studio gibi bir araç kullanıyorsanız her bir sorgu sayfası bir oturum demektir. Yada herhangi bir programlama dili ile Sql sorguları gönderiyorsanız her gönderdiğiniz sorgu bir oturum demektir. Sql Server Management Studio üzerinden ikinci bir Sql sayfası açtığınızda ilk açtığınız sayfada yapmış olduğunuz set atamaları geçersiz olacaktır. Aynı şekilde bir programlama dili ile veritabanına gönderdiğiniz sorgudan sonra farklı bir sorgu gönderdiğinizde ikinci sorguda da yeni bir oturum açılacak ve ilk sorgu ile gönderdiğiniz set atamaları geçersiz olacaktır. Aynı şey stored procedure ve fonksiyonlarda da geçerlidir. Yani bir stored procedure yada fonksiyon içerisinde set ile herhangi bir ayarlama yaparsanız, ilgili stored procedure veya fonksiyon bittikten sonra da değiştirdiğiniz set ifadesinin ön tanımlı değeri geçerli olur.
set deyimi ile değiştirebileceğiniz ifadeler;
Kategori | İfade |
Tarih ve Saat | set dateformat set datefirst |
Kilitleme | set deadlock priority set lock_timeout |
Sorgu Çalıştırma | set arithabort set arithignore set fmtonly set nocount set noexec set numeric_roundabort set parseonly set query_governor_cast_limit set result set caching set rowcount set textsize |
ISO Ayarları | set ansi_defaults set ansi_null_dflt_off set ansi_null_dflt_on set ansi_nulls set ansi_padding set ansi_warnings |
İstatistik | set forceplan set showplan_all set showplan_text set showplan_xml set statistics io set statistics xml set statistics profile set statistics time |
Transactionlar | set implicit_transactions set remote_proc_transactions set transaction isolation level set xact_abort |
Tarih ve saat için ayarlanan set ifadeleri ile Sql Server’ın saat ve tarih kullanım şeklini değiştirebilirsiniz. Kilitleme dediğim lock, yani veri tutarlılığını sağlayan veritabanı, tablo, sütun ve satırlar üzerinde uygulanabilen yapılardır. Shared, Update, Exclusive, Intent, Bulk Update, Schema, Deadlock gibi çeşitleri vardır. Lock içinde set ifadeleri bulunmaktadır. Sorgu çalıştırma, doğrudan çalıştırılan Sql komutları içindir. ISO ayarları, ISO standartları için oluşturulmuş set ifadeleridir. İstatistik, herhangi bir Sql sorgusu çalıştırılırken harcanan bellek alanı, CPU miktarı gibi istatikleri gösterir, fakat sorgu sonucunda herhangi bir şey ekrana yazılacaksa onu yazdırmaz, sadece ilgili sorgu için istatistikleri gösterir. Transactionlar, sorguların doğru ve hatasız çalışıp çalışmadığını kontrol eden, sorgu hata verdiğinde aynı sorgu dosyası içerisinde daha önceki sorguların geri alınmasını sağlayan yapılardır ve set ifadesi ile de transactionlar yönetilebilir ve birkaç ayarı değiştirilebilir.
Bu yazımda sadece isim olarak belirttim fakat zaman içerisinde hepsini anlatacak ve yazı olarak paylaşacağım. Sql Server’da set genel olarak böyle olmakta, tüm Sql Server yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.