Tüm Tablolarda Veri Arama

Tüm Tablolarda Veri Arama

Bugün ki yazımızda sizlere Tüm Tablolarda Veri Arama adında bir script paylaşacağım. SQL Server üzerinde bir verinin hangi tabloda ya da view’da ve hangi kolonda geçtiğini öğrenmek için bu scripti kullanabilirsiniz. Örnek bir kullanım vermek gerekirse;

Büyük bir veritabanına program ile kayıt ekliyorsunuz. Eklediğiniz kayıt hangi tablolara ya da views’lara eklenmiş bunu bulabilirsiniz.

Tüm Tablolarda Veri Arama

DECLARE
   @SearchText varchar(200),
   @Table varchar(100),
   @TableID int,
   @ColumnName varchar(100),
   @String varchar(1000);
SET @SearchText = 'ARANACAK VERİ BURAYA YAZILACAK';

DECLARE CursorSearch CURSOR
    FOR SELECT name, object_id
        FROM sys.objects
      WHERE type = ('U');  --Viewlarda arama yapmak icin burasi V olacak 

	  OPEN CursorSearch;
FETCH NEXT FROM CursorSearch INTO @Table, @TableID;
WHILE
       @@FETCH_STATUS
       =
       0
    BEGIN
        DECLARE CursorColumns CURSOR
            FOR SELECT name
                  FROM sys.columns
                WHERE
                       object_id
                       =
                       @TableID AND system_type_id IN(167, 175, 231, 239);
        -- Burada sadece text alanlarında arama yaptığımızı belirtiyoruz. Durumunuza göre değiştirebilirsiniz.     
--167 = varchar; 175 = char; 231 = nvarchar; 239 = nchar        
OPEN CursorColumns;
        FETCH NEXT FROM CursorColumns INTO @ColumnName;
        WHILE
               @@FETCH_STATUS
               =
               0
            BEGIN
                SET @String = 'IF EXISTS (SELECT * FROM ['
                            + @Table
                            + '] WHERE ['
                            + @ColumnName
                            + '] LIKE ''%'
                            + @SearchText
                            + '%'') PRINT '''
                            + @Table
                            + ', '
                            + @ColumnName
                            + '''';
                EXECUTE (@String);
                FETCH NEXT FROM CursorColumns INTO @ColumnName;
            END;
        CLOSE CursorColumns;
        DEALLOCATE CursorColumns;
        FETCH NEXT FROM CursorSearch INTO @Table, @TableID;
    END;
CLOSE CursorSearch;
DEALLOCATE CursorSearch;

Tüm Tablolarda Veri Arama scriptimizin sonucu size tablo adı ve kolon adının bulunduğu bir mesaj listesi dönecektir. Script üzeriden kişileştirme işlemlerinizi yapabilirsiniz. Gerekli açıklamaları script üzerinde belirttim. MSSQL kategorimize bakmayı unutmayınız.

Referans: https://docs.microsoft.com/en-us/sql/t-sql/language-reference?view=sql-server-ver15

E-bültene Abone Ol Merak etmeyin. Spam yapmayacağız.

Yazar

Kocaeli Üniversitesi Bilişim Sistemleri Mühendisliğini bitirip sektörde veri tabanı mühendisi olarak göreve başladım.

İlgili Yazılar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Hızlı yorum için giriş yapın.

Başka Yazı Yok

Kayıt Ol

Zaten üye misiniz? Giriş Yap

Giriş Yap

Henüz üyeliğiniz yok mu? Kayıt Ol