SQL Server’da Veritabanının Tüm Tabloları ve Tüm Sütunlarında Arama Yapan Prosedür
Herkese merhaba,
Bu yazıda SQL Server’da veritabanının tüm tabloları ve tüm sütunlarında arama yapan prosedür hakkında bilgi vereceğim.
SQL Server’da bazı durumlarda veritabanının tüm tabloları ve tüm sütunlarında arama yapmak isteyebilirsiniz.
Aşağıdaki prosedürü kullanarak siz de bu işlemi rahatlıkla yapabilirsiniz.
--Prosedürün oluşturulması
CREATE PROC TumTablolardaAramaYap
(@AranacakKelime NVARCHAR(100))
AS
BEGIN
CREATE TABLE #Results
(
TableName NVARCHAR(370),
ColumnName NVARCHAR(370),
ColumnValue NVARCHAR(3630)
);
SET NOCOUNT ON;
DECLARE @TableName NVARCHAR(256),
@ColumnName NVARCHAR(128),
@SearchStr2 NVARCHAR(110);
SET @TableName = N'';
SET @SearchStr2 = QUOTENAME('%' + @AranacakKelime + '%', '''');
WHILE @TableName IS NOT NULL
BEGIN
SET @ColumnName = N'';
SET @TableName =
(
SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
AND OBJECTPROPERTY(OBJECT_ID(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)), 'IsMSShipped') = 0
);
WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL)
BEGIN
SET @ColumnName =
(
SELECT MIN(QUOTENAME(COLUMN_NAME))
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2)
AND TABLE_NAME = PARSENAME(@TableName, 1)
AND DATA_TYPE IN ( 'char', 'varchar', 'nchar', 'nvarchar' )
AND QUOTENAME(COLUMN_NAME) > @ColumnName
);
IF @ColumnName IS NOT NULL
BEGIN
INSERT INTO #Results
EXEC ('SELECT ''' + @TableName + ''', ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630)
FROM ' + @TableName + ' (NOLOCK) ' + ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2);
END;
END;
END;
SELECT *
FROM #Results;
END;
--Prosedürün kullanımı
EXEC dbo.TumTablolardaAramaYap @AranacakKelime = N'PO18850127500'
Prosedürü oluşturup kodu çalıştırdığınızda aşağıdakine benzer bir sonuç göreceksiniz.
Görüldüğü üzere aradığımız kelimenin hangi tabloda ve hangi sütunda olduğu bilgisi gelmiş oldu.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.