请问怎么通过表名查找所属数据库?

时间:2022-09-10 17:14:56
请问怎么通过表名查找所属数据库?
网上找到一条sql.
EXEC sp_MSforeachdb @command1
    = 'IF EXISTS( SELECT Name FROM [?].SYS.OBJECTS WHERE CharIndex(''@tableName'', Name) > 0) 
            PRINT ''?'''

执行时,提示命令已完成。可是仍然不知道属于哪个数据库。

菜鸟求助!

4 个解决方案

#1


DECLARE @Tab TABLE(DBName sysname)
INSERT INTO @Tab
        ( DBName )
EXEC sp_MSforeachdb @command1
    = 'SELECT ''?'' FROM [?].SYS.OBJECTS WHERE Name=''表名'''
SELECT * FROM @Tab

#2


EXEC sp_MSforeachdb @command1
    = 'IF EXISTS( SELECT Name FROM [?].SYS.OBJECTS WHERE CharIndex(''表名'', Name) > 0) 
            PRINT ''?'''
--这是有对象为表名的都成立,打印DBNAME
如:表名为:T

TT/T--只能有对象T都成立

#3



declare @tsql nvarchar(1000),
             @tablename nvarchar(200)

select @tablename=N'[表名]'

select @tsql=N'if exists(select 1 from [?].sys.tables where name='''+@tablename+N''') print ''Database Name: ''+''?'' '
exec sys.sp_Msforeachdb @tsql

#4


谢谢 roy_88
搞定。

#1


DECLARE @Tab TABLE(DBName sysname)
INSERT INTO @Tab
        ( DBName )
EXEC sp_MSforeachdb @command1
    = 'SELECT ''?'' FROM [?].SYS.OBJECTS WHERE Name=''表名'''
SELECT * FROM @Tab

#2


EXEC sp_MSforeachdb @command1
    = 'IF EXISTS( SELECT Name FROM [?].SYS.OBJECTS WHERE CharIndex(''表名'', Name) > 0) 
            PRINT ''?'''
--这是有对象为表名的都成立,打印DBNAME
如:表名为:T

TT/T--只能有对象T都成立

#3



declare @tsql nvarchar(1000),
             @tablename nvarchar(200)

select @tablename=N'[表名]'

select @tsql=N'if exists(select 1 from [?].sys.tables where name='''+@tablename+N''') print ''Database Name: ''+''?'' '
exec sys.sp_Msforeachdb @tsql

#4


谢谢 roy_88
搞定。