SQL SERVER SEARCH ALL DATABASE SPECIFIC TABLE NAME

USE YENIDATA
GO

DECLARE @dbname VARCHAR(500)
DECLARE @tblname NVARCHAR(500)

SET @tblname = 'LG%'

DECLARE db_cursor CURSOR FOR
SELECT name FROM sys.databases
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @dbname

WHILE @@FETCH_STATUS = 0
BEGIN
    IF EXISTS (SELECT * FROM [sys].[databases] d
                INNER JOIN [sys].[master_files] m ON d.database_id = m.database_id
                WHERE d.state_desc = 'ONLINE'
                AND m.state = 0 -- ONLINE
                AND d.name = @dbname
                AND EXISTS (SELECT 1 FROM [sys].[tables] t WHERE t.name LIKE @tblname))
    BEGIN
        PRINT 'Tables starting with [' + @tblname + '] exists in database [' + @dbname + ']'
        EXEC ('USE [' + @dbname + ']; SELECT TABLE_CATALOG+''.''+TABLE_SCHEMA+''.''+TABLE_NAME AS ''Table Name'' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE ''' + @tblname + ''' AND TABLE_TYPE=''BASE TABLE''')
    END
    FETCH NEXT FROM db_cursor INTO @dbname
END

CLOSE db_cursor
DEALLOCATE db_cursor

Leave a comment