Veritabanında Aradığınız Kolonu ve İçeriği Bulmak

18 Tem by NURULLAH ÇAKIR

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'

 

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir