Veritabanı Tablolarındaki Alanlarda Geçen Değerleri Arama | MsSql

Merhaba, geçtiğimiz günlerde tablo yapısını pek bilmediğim bir veritabanında bazı verilere ihtiyacım oldu.

Elimde bir bilgi de yoktu tablolar ve ilişkiler ile ilgili.

Ancak o veritabanından elde edildiğini düşündüğüm bir excel liste vardı.

Ben de o listede geçen bazı kelimelerin hangi tablolarda geçtiğini bularak, biraz da tecrübeyle ihtiyacım olan verilere ulaştım.

Birilerinin işine yararsa diyerek buradan paylaşıyorum:

SET NOCOUNT OFF;
DECLARE @strSql nvarchar(4000) = '';
DECLARE @mCursor CURSOR;
DECLARE @tabloAdi VARCHAR(150);
DECLARE @alanAdi VARCHAR(150);
SET @mCursor = CURSOR FAST_FORWARD FOR
SELECT t.[name],
c.[name]
FROM sys.schemas s
INNER JOIN sys.tables t
ON s.schema_id = t.schema_id
INNER JOIN sys.columns c
ON t.object_id = c.object_id
INNER JOIN sys.types d
ON c.user_type_id = d.user_type_id
AND d.name LIKE '%char%';
OPEN @mCursor
FETCH NEXT FROM @mCursor INTO @tabloAdi, @alanAdi
WHILE @@FETCH_STATUS = 0 BEGIN
SET @strSql = ' SELECT TOP 10 * FROM [VERITABANI].dbo.[' + @tabloAdi + '] WITH (NOLOCK) WHERE [' + @alanAdi + '] LIKE ''%' + 'aradığım kelime' + '%''';
BEGIN TRY
EXEC sp_executesql @strSql;
IF (@@ROWCOUNT > 0) BEGIN
PRINT 'SQL: ===================> ' + @strSql + ' <===================';
END;
END TRY
BEGIN CATCH
PRINT 'HATA !!!!!! : ' + @strSql + ' !!!!!';
END CATCH
FETCH NEXT FROM @mCursor INTO @tabloAdi, @alanAdi
END;
CLOSE @mCursor;
DEALLOCATE @mCursor;

Selamlar.

Leave a Reply

Your email address will not be published. Required fields are marked *