Master Tablosuna Sorgu Çekerek Tablo Bilgilerine Erişme

Master Tablosuna Sorgu Çekerek Tablo Bilgilerine Erişme

Merhabalar,

Bu makalemde local ve host üzerinde bulunan MSSQL database’imizde ki tablolar üzerinde yapılan kolon değişiklikleri üzerine olacak.

Bir senaryo üzerinden devam edecek olursak; localinizde bulunan büyük bir projenin tabloların kolonlarında bir düzine güncelleme yaptınız, yeni alanlar eklediniz, tiplerini veya lenght’lerini bilmiyorsunuz unuttunuz.
Bu noktada imdadımıza master database’i yetişebilir..
Master database’inde bulunan INFORMATION_SCHEMA üzerinden içeride bulunan tablolara sorgu çekerek kolon bilgilerini alabiliriz. Bunun için ihtiyacımız olan sorgu aşağıdadır.

USE DATABASEADI
GO
select column_name,DATA_TYPE ,(CASE WHEN DATA_TYPE= 'VARCHAR' THEN ' (' + CAST (CHARACTER_MAXIMUM_LENGTH AS VARCHAR) + ')' ELSE '' END) CHARCOUNT, 'if not exists (select column_name from INFORMATION_SCHEMA.columns where table_name = ''TABLO_ADI'' and column_name = '''+ column_name+''') ALTER TABLE TABLO_ADI ADD ' + column_name +' ' + DATA_TYPE + (CASE WHEN DATA_TYPE= 'VARCHAR' THEN ' (' + CAST (CHARACTER_MAXIMUM_LENGTH AS VARCHAR) + ')' ELSE '' END) CHARCOUNT from INFORMATION_SCHEMA.columns where table_name = 'TABLO_ADI'
GO

Yukarıda ki parçacığında bulunan DATABASEADI kısmına işlem yapmak istediğiniz DB’yi, TABLO_ADI kısmına ise DB’deki işlem yapmak istediğiniz tablo adını yazıyoruz. Sonucunda ise bize aşağıdaki gibi bir çıktı üretiyor (Bu işlemi localdeki DB’mizde yapıyoruz.)

MSSQL Master Query

MSSQL Master Query

Sonrasında ise kırmızı ile işaretlediğimiz alanı komple kopyalayıp sunucumuza bağlanıyoruz ve işlem yapacağımız DB’mizi seçiyoruz. Yeni bir query sayfası açıp yapıştırıp, kodumuzu execute ediyoruz ve sonucunda güncellemek istediğimiz tabloya sorgu çekerek kolonları kontrol ediyor, içeride kolon yoksa ekliyor varsa es geçiyor. Böylelikle tek tek kolonları kontrol etmemize gerek kalmıyor.

Aşağıdaki ise çıktısı alınan örnek bir kod satırıdır.

if not exists (select column_name from INFORMATION_SCHEMA.columns where table_name = 'AYD_USERS' and column_name = 'LREF') ALTER TABLE AYD_USERS ADD LREF int

Yukaridaki örnekte ise dediğimiz gibi tabloya bakar, kolon yoksa ALTER komutu çalışır ve tabloya kolonu ekler. Bu işlemi tüm kolonlar için yapar.

Bol kodlu günler.

1,580 total views, 3 views today

No Comments

Leave a Comment

Ulaşım için: Facebook: /ganigani Twitter: @abdulgani_demir


*

%d blogcu bunu beğendi: