SQL Undocumented Procedures – Dökümente Edilmemiş Prosedürler

Bu yazımızda size birçok kolaylıklar sağlayabilecek Dökümente Edilmemiş Stored Prosedürler den bazılarını inceleyeceğiz.

Başlamadan önce bu prosedürlerin bir kısmının eski SQL versiyonlarından yeni versiyonlara “depricated” olarak aktarıldığını, yani ilerideki versiyonlarda bu prosedürlerin olmayabileceğini bilmeliyiz. Yeni bir proje geliştirirken bu sp leri kullanmamızın versiyon geçişlerinde sorun çıkarabileceğini göz ardı etmeyiniz.

SP_MSFOREACHDB:

Yazdığımız bir sorguyu Instance üzerindeki tüm tablolarda çalıştırmak istediğimizde kullanabileceğimiz bir sp.

sp_msforeachdb ‘BACKUP DATABASE ? TO DISK = ”D:\DATA_SQL\?.bak”’

Örneğinde tek bir satır kod ile tüm veritabanlarının yedeğini tek seferde alabiliriz. Yazılış metodu olarak veritabanı ismi yerine ? karakteri kullanılır.

Belki tüm veritabanlarını Shrink etmek de isteriz, bunlar hep tek satır J;

sp_ msforeachdb ‘DBCC SHRINKDATABASE(N”?” )’

SP_MSFOREACHTABLE:

Yazdığımız sorguyu bir veritabanındaki tüm tablolarda çalıştırmak istediğimizde kullanabileceğimiz bir sp.

sp_msforeachtable ‘SELECT COUNT(1) FROM ? ‘

Tüm tablolarımın satır sayılarını bulmak için kullanabilirim J .Çok mantıklı bir örnek olmadı değil mi?

Diyelim ki küçük birkaç tablo ile başlayan bir projeniz var. Kullanıcı talepleri arttıkça tablo sayıları arttı. Her gün yeni tablolar, yeni alanlar açılıyor. Ama günün birinde farklı bir talep geldi proje başında kesinlikle lazım olmayacak denilmesine rağmen artık veritabanındaki tüm tablolarda her bir kayıt için kayıt tarihi tutulması gerekiyor.

Tabi ki tüm tablolara tek tek alan açmaya uğraşmayacaksınız!

sp_msforeachtable ‘ALTER TABLE ? ADD CREATEDATE SMALLDATETIME’

koduyla tüm tablolarımıza SmallDateTime tipinde bir kayıt oluşturulma tarihi ekledik.

SP_MSLOGINMAPPINGS:

SQL Server da hangi login hangi database altında hangi db user a denk geliyor sorusunun cevabını verir. Özellikle karmaşık bir yetkilendirme yapınız varsa login-user maplenmesi konusunda referans alabilirsiniz.

Resim-1

SP_MSTABLESPACE:

Tablo bazında kayıt sayısı, data alanı, index alanı bilgilerini verir.(Resim-2)

Resim-2

Tek tablo için değil de tüm tablolar için istiyorsak az önce kullandığımız sp_msforeachtable sp si ile sp_msforeachtable ‘sp_mstablespace ”?”’ şeklinde kullanabiliriz.

SP_WHO2:

En çok kullanılanlarından biridir. Özellikle problem anlarında Activity Monitor ara yüzünde yüklenme sorunları yaşandığında, hangi kullanıcıdan hangi sorgu geliyor ne kadar işlemci zamanı harcıyor, ne kadar disk IO su yapıyor sorularının cevabını verir.(Resim-3)

Resim-3

XP_ENUM_OLEDB_PROVIDERS:

Sunucuda yüklü olan OLEDB provider listesini getirir. İstediğiniz kaynağa bağlanmak için gerekli provider var mı bakabilirsiniz.

XP_ENUMERRORLOGS:

“C:\Program Files\Microsoft SQL Server\MSSQL10_50 \MSSQL\Log” klasöründe görebileceğiniz hata dosyalarının listesini verir.(Path kuruluma göre değişebilir.)Log dosyasına yeni kayıt gelip gelmediğini anlamak için Date alanını kontrol edebilirsiniz.

XP_FILEEXIST:

İsminden de anlaşılabileceği gibi dosya ya da klasörün mevcut olup olmadığını kontrol eder.

xp_fileexist ‘D:\DATA_SQL\AdventureWorks2008R2.bak’

XP_FIXEDDRIVES:

SQL diskte boş alan kalmaması zaman zaman karşılaşılabilecek ve sıkıntılı bir durumdur, en iyisi bu durum oluşmadan önlem almak ve çözüm üretmektir.

Bu SP, sunucu üzerinde bulunan sabit diskleri ve boş alanlarını gösterir. Disklerinizin boş alanlarını takip ettiğiniz bir altyapınız yok ise bunun üzerinden bir çözüm üretebilirsiniz.

Undocumented Sp ler içinden en çok kullanılanlarını kısaca incelemiş olduk.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

Yazı gezinmesi

Mobil sürümden çık