我们有很多数据库和这些数据库中的很多表。我正在寻找一个特定的。我知道表的名称,但手动搜索每个数据库并不容易。我可以使用什么 SQL 语句按名称查找表?
顺便说一句,我们正在使用 Microsoft SQL Server Management Studio。也许还有另一种方法可以在这个程序中按名称搜索表?
我们有很多数据库和这些数据库中的很多表。我正在寻找一个特定的。我知道表的名称,但手动搜索每个数据库并不容易。我可以使用什么 SQL 语句按名称查找表?
顺便说一句,我们正在使用 Microsoft SQL Server Management Studio。也许还有另一种方法可以在这个程序中按名称搜索表?
您说您进行了搜索,该搜索本应将您带到这篇文章:
http://blog.sqlauthority.com/2008/04/29/sql-server-find-table-in-every-database-of-sql-server/
如果没有,请遵循。基本上,他创建的是一个存储过程,它将搜索您在每个数据库中指定的每个表名。
如果你要这样做:
select * from sys.tables where name like '%tablename%'
您每次都需要更改数据库,如果您有很多,那么您会发现问题。
尝试这个:
Select name from DBname.sys.tables where name like '%info'
以为我会使用我现在使用的解决方案进行更新,以在许多 dB 中找到一个表。经过一番搜索,我发现了这个查询:
/*Finds a table across multiple dBs and returns the dB(s) in which the table was found*/
SELECT DISTINCT DB_NAME(database_id)
FROM [sys].[dm_db_index_operational_stats](NULL,NULL,NULL,NULL)
WHERE OBJECT_NAME(object_id,database_id) = 'table name'
此查询查找保存该表的 dB。然后,在 Microsoft SQL Server Mgmt Studio 中,我转到对象资源管理器窗口,找到查询所标识的 dB,展开其内容,然后单击 Tables 文件夹。然后我使用过滤器工具按名称查找表。如果过滤器工具在 Databases 文件夹上工作但它没有工作,那就太好了。您必须在过滤之前选择 Tables 文件夹。
这可能不是最好的解决方案,但它对我有用。