Tüm Tablolarda Veri Arama
- 0
- 0
- 0
- 0
- 0
- 0
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