SQL - 在服务器上的所有数据库的INFORMATION_SCHEMA

Ahm*_*tun 5 sql sql-server information-schema

INFORMATION_SCHEMA.TABLES或INFORMATION_SCHEMA.COLUMNS仅适用于指定的数据库.

是否可以使用INFORMATION_SCHEMA查询服务器上所有数据库的表元数据?

Dal*_*lex 10

您只能通过使用动态查询进行数据库迭代来完成此操作.一种方法是使用ms_ForEachDB存储过程,第二种是查询sys.databases动态视图.


小智 5

将 Dalex 的答案扩展为代码。

--Make sure you have a global temporary table to use. Double dots are shorthand for .dbo.
IF OBJECT_ID('tempdb..##test') IS NOT NULL DROP TABLE ##test
--Create the table definition the easy way.
SELECT * INTO ##test
FROM ???.INFORMATION_SCHEMA.TABLES --The ??? will be whatever the name of your first database is.
DELETE FROM ##test
--Add all the data.
EXEC sp_MSforeachdb 'USE ? INSERT INTO ##test SELECT * FROM INFORMATION_SCHEMA.TABLES'
--View all the data.
SELECT * FROM ##test
--Clean up.
DROP TABLE ##test
Run Code Online (Sandbox Code Playgroud)