显示包含特定表的数据库的所有名称

C S*_*per 16 sql database sql-server sql-server-2008

我的SQL Server中有很多数据库.

我必须只搜索包含特定表名的数据库名称 Heartbitmaster

我有很多数据库,如Gotgold,DVD等等,我只是想从查询中找到包含该表的数据库名称Heartbitmaster.

我搜索过我试过查询:

SELECT 
    TABLE_NAME  
FROM 
    INFORMATION_SCHEMA.TABLES 
WHERE 
    TABLE_TYPE = 'base table'   
    AND table_schema = 'Heartbitmaster'
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

我进一步搜索并发现:

SELECT name, database_id, create_date
FROM sys.databases 
Run Code Online (Sandbox Code Playgroud)

但不知道如何进一步安排搜索表名的条件

请帮我.

C S*_*per 34

我通过以下查询完成了它:

SELECT name FROM   sys.databases WHERE  CASE
  WHEN state_desc = 'ONLINE' 
  THEN OBJECT_ID(QUOTENAME(name) + '.[dbo].[heartbit]', 'U')
   END IS NOT NULL
Run Code Online (Sandbox Code Playgroud)

  • 我只想找到包含表心的db NAME (3认同)
  • 没有必要喊 - 我只是指出了一个限制.查询可能适用于您的情况,但可能不适合此问题的未来访问者. (3认同)
  • 别担心.+1是一个聪明的解决方案. (3认同)
  • @Damien_The_Unbeliever 不 - 不,我的大写锁定打开了,我不知道它......这不是故意的。你可以看到我试图用大写字母写 DB,为此我按下了 shift 键,但相反它变成了小写字母。 (2认同)

Nit*_*hin 7

sp_MSforeachdb 'SELECT "?" AS DB, * FROM [?].sys.tables WHERE name like ''%tablename%'''
Run Code Online (Sandbox Code Playgroud)

试试这个