Veritabanında Aradığınız Kolonu ve İçeriği Bulmak
Bazen bir kolon adının veritabanındaki hangi tabloda olduğunu öğrenmek isteyebilirsiniz. Tek tek tabloların kolonlarına bakmak yerine aşağıdaki script’lerden birini kullanabilirsiniz.
select table_name AS [Tablo Adı], Column_name AS [Kolon İsmi] from Information_Schema.Columns where Column_Name like '%Aradığınız Kolon İsmi%'
Select distinct object_name(object_id) AS [Tablo Adı], name AS [Kolon İsmi] from sys.columns where name like '%Aradığınız Kolon İsmi%'
Yada veritabanında şu ifade hangi tabloda geçiyor sorusunun cevabını almak isteyebilirsiniz. Bunun için de aşağıdaki stored procedure’ü kullanabilirsiniz. “SizinVeritabanıİsminiz” yazan yere kendi veritabanı adınız yazmalısınız.
USE [SizinVeritabanıİsminiz] GO CREATE PROC [dbo].[TumTablolardaAra] ( @Aranacak nvarchar(100) ) AS BEGIN CREATE TABLE #Sonuc (ColumnName nvarchar(370), ColumnValue nvarchar(3630)) SET NOCOUNT ON DECLARE @TabloIsmi nvarchar(256), @KolonIsmi nvarchar(128), @Aranacak2 nvarchar(110) SET @TabloIsmi ='' SET @Aranacak2 = QUOTENAME('%' + @Aranacak + '%','''') WHILE @TabloIsmi IS NOT NULL BEGIN SET @KolonIsmi = '' SET @TabloIsmi = ( SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TabloIsmi AND OBJECTPROPERTY( OBJECT_ID( QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) ), 'IsMSShipped' ) = 0 ) WHILE (@TabloIsmi IS NOT NULL) AND (@KolonIsmi IS NOT NULL) BEGIN SET @KolonIsmi = ( SELECT MIN(QUOTENAME(COLUMN_NAME)) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = PARSENAME(@TabloIsmi, 2) AND TABLE_NAME = PARSENAME(@TabloIsmi, 1) AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar') AND QUOTENAME(COLUMN_NAME) > @KolonIsmi ) IF @KolonIsmi IS NOT NULL BEGIN INSERT INTO #Sonuc EXEC ( 'SELECT ''' + @TabloIsmi + '.' + @KolonIsmi + ''', LEFT(' + @KolonIsmi + ', 3630) FROM ' + @TabloIsmi + ' (NOLOCK) ' + ' WHERE ' + @KolonIsmi + ' LIKE ' + @Aranacak2 ) END END END SELECT ColumnName AS [Tablo ve Kolon İsmi], ColumnValue AS [Kolon İçeriği] FROM #Sonuc END
Stored procedure’ü oluşturduktan sonra aşağıdaki gibi sorgulamalısınız. “SizinVeritabanıİsminiz” yazan yere kendi veritabanı adınız yazmalısınız. Büyük veritabanlarında bu sorguyu çalıştırırken kontrollü olmalısınız.
USE [SizinVeritabanıİsminiz] GO [dbo].[TumTablolardaAra] 'Burayaaracağınızkelimeyiyazmalısınız'