Veritabanındaki Bütün...

Aklımda duracağına bloğumda dursun mantığıyla burayada yazayım dedim.Aşağıdaki kod bloğu vertabanında bulunan bütün tabolarda ve b&uum...

Veritabanındaki Bütün Tablo ve Bütün Alanlarda Arama Yapma

Veritabanındaki Bütün Tablo ve Bütün Alanlarda Arama Yapma

Aklımda duracağına bloğumda dursun mantığıyla burayada yazayım dedim.Aşağıdaki kod bloğu vertabanında bulunan bütün tabolarda ve bütün alanlarda arama gerçekleştirir.
 
Kullanımı
 
 
EXEC SearchAllTables 'Computer'
GO 
 
Procedür
 
 
 
CREATE PROC SearchAllTables
(
    @SearchStr nvarchar(100)
)
AS
BEGIN
 
    CREATE TABLE #Results (ColumnName nvarchar(370), ColumnValue nvarchar(3630))
 
    SET NOCOUNT ON
 
    DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
    SET  @TableName = ''
    SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')
 
    WHILE @TableName IS NOT NULL
 
    BEGIN
        SET @ColumnName = ''
        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', 'int', 'decimal')
                    AND    QUOTENAME(COLUMN_NAME) > @ColumnName
            )
 
            IF @ColumnName IS NOT NULL
 
            BEGIN
                INSERT INTO #Results
                EXEC
                (
                    'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630) 
                    FROM ' + @TableName + ' (NOLOCK) ' +
                    ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2
                )
            END
        END    
    END
 
    SELECT ColumnName, ColumnValue FROM #Results
END
 

 

Hayrullah Güven

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper.

4 Yorum

ali  04.03.2016 Yanıtla

Msg 4145, Level 15, State 1, Procedure SearchAllTables, Line 25 An expression of non-boolean type specified in a context where a condition is expected, near ';'. Msg 4145, Level 15, State 1, Procedure SearchAllTables, Line 42 An expression of non-boolean type specified in a context where a condition is expected, near ';'.

Hayrullah  04.03.2016 Yanıtla

Evet yazım hatası varmış. Düzelttim. Son halini kullanabilirsiniz.

İbrahim  17.05.2016 Yanıtla

Önemli bir konu, teşekkürler. Aranılacak metni nereye yazıyoruz hocam?

Hayrullah  17.05.2016 Yanıtla

ibrahim  EXEC SearchAllTables 'ARANAN KELİME' GO  şekilinde arayabilirsin

Yorum Yaz