Forum

MS Sql server tüm v...
 
Bildirimler
Hepsini Temizle

MS Sql server tüm veritabanında kelime arama

kazimates
(@kazimates)
Üye

Mevcut MS Sql server içinde kurulu veritabanlarında seçtiğim veritabanı içinde bir kelimenimn nerede geçtiğini bulmasını aşağıda vereceğim kod ile yapmaktayım. Fakat tam anlamıyla düzgün çalışmıyor. Buna alternatif bana önerebileceğiniz bir çözüm varsa paylaşmanızı isteyeceğim.

 

Kullandığım kod:

DECLARE
@search_string VARCHAR(100),
@table_name SYSNAME,
@table_id INT,
@column_name SYSNAME,
@sql_string VARCHAR(2000)

SET @search_string = 'Aranacak Kelime/leri BURARA YAZIYORUZ'

DECLARE tables_cur CURSOR FOR SELECT ss.name +'.'+ so.name [name], object_id FROM sys.objects so INNER JOIN sys.schemas ss ON so.schema_id = ss.schema_id WHERE type = 'U'

OPEN tables_cur

FETCH NEXT FROM tables_cur INTO @table_name, @table_id

WHILE (@@FETCH_STATUS = 0)
BEGIN
DECLARE columns_cur CURSOR FOR SELECT name FROM sys.columns WHERE object_id = @table_id
AND system_type_id IN (167, 175, 231, 239)

OPEN columns_cur

FETCH NEXT FROM columns_cur INTO @column_name
WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @sql_string = 'IF EXISTS (SELECT * FROM ' + @table_name + ' WHERE [' + @column_name + ']
LIKE ''%' + @search_string + '%'') PRINT ''' + @table_name + ', ' + @column_name + ''''

EXECUTE(@sql_string)

FETCH NEXT FROM columns_cur INTO @column_name
END

CLOSE columns_cur

DEALLOCATE columns_cur

FETCH NEXT FROM tables_cur INTO @table_name, @table_id
END

CLOSE tables_cur
DEALLOCATE tables_cur

 
Alıntı
Konu başlatıcı Gönderildi : 22/12/2020 13:03

Sait ORHAN
(@saitorhan)
Üye

Merhabalar,

String İfadeyi Tüm Veri Tabanı İçerisinde Arama - ÇözümPark Forum (cozumpark.com)

linkinde ki kodu deneyebilirsiniz. Ancak bu şekilde metin arama için özelleştirilmiş olan "Full Text Search" yapısını kullanabilirsiniz. Özellikle kelimeler kısmı için full text search tavsiye ediyorum

 

---------
Sait ORHAN
Bilgisayar Mühendisi
Web: http://saitorhan.com

CevapAlıntı
Gönderildi : 22/12/2020 13:08

Mehmet Sucu
(@mehmetsucu)
Üye

Merhaba @kazimates bunu kullanabilirsin ya da  https://www.red-gate.com/products/sql-development/sql-search/ sql search indirebilirsin.

DECLARE @kelime VARCHAR (50) = 'provizyon' ;

SELECT SCHEMA_NAME( sys.tables.schema_id ) AS schema_name
, sysobjects.[name] AS TableName
, syscolumns.[name] AS ColumnName
, syscolumns.isnullable AS IsNullable
, systypes.[name] AS DataType
, syscolumns.[length] AS Length
, syscomments.text AS "Default Value"
, sys.default_constraints.[name] AS "Constraint Name"
, syscolumns.iscomputed AS IsComputed
FROM sysobjects
LEFT JOIN syscolumns
ON sysobjects.[id] = syscolumns.[id]
LEFT JOIN systypes
ON systypes.[xtype] = syscolumns.[xtype]
LEFT JOIN syscomments
ON syscolumns.cdefault = syscomments.id
LEFT JOIN sys.tables
ON sys.tables.object_id = syscolumns.id
LEFT JOIN sys.default_constraints
ON sys.tables.[object_id] = sys.default_constraints.[parent_object_id]
AND syscolumns.colid = sys.default_constraints.parent_column_id
WHERE (
(sysobjects.[type] = '%' + @kelime + '%')
OR (systypes.[name] = '%' + @kelime + '%')
OR (syscolumns.name LIKE '%' + @kelime + '%')
OR (SCHEMA_NAME( sys.tables.schema_id ) = '%' + @kelime + '%')
)
ORDER BY SCHEMA_NAME( sys.tables.schema_id )
, sysobjects.[name]
, syscolumns.[name] ;

Mehmet SUCU
HBYS Yazılım Uzmanı
[email protected]
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

CevapAlıntı
Gönderildi : 22/12/2020 13:20

Paylaş: