如何获取两个不同数据库中所有表的列表

M4N*_*M4N 13 sql-server database-schema

我正在尝试创建一个小的SQL脚本(在SQL Server Management Studio中)以获取两个不同数据库中所有表的列表.目标是找出两个数据库中存在哪些表以及哪些表只存在于其中一个表中.

我在SO上找到了各种脚本来列出一个数据库的所有表,但到目前为止,我无法获得多个数据库的表列表.

那么:有没有办法在SQL Server中查询特定数据库中的所有表,例如,SELECT * FROM ... WHERE databaseName='first_db'以便我可以将其与另一个数据库的结果连接起来?

And*_*y M 20

SELECT * FROM database1.INFORMATION_SCHEMA.TABLES
UNION ALL
SELECT * FROM database2.INFORMATION_SCHEMA.TABLES
Run Code Online (Sandbox Code Playgroud)

UPDATE

为了比较这两个列表,您可以使用FULL OUTER JOIN,它将显示两个数据库中存在的表以及仅存在于其中一个数据库中的表:

SELECT *
FROM database1.INFORMATION_SCHEMA.TABLES db1
  FULL JOIN database2.INFORMATION_SCHEMA.TABLES db2
    ON db1.TABLE_NAME = db2.TABLE_NAME
ORDER BY COALESCE(db1.TABLE_NAME, db2.TABLE_NAME)
Run Code Online (Sandbox Code Playgroud)

您还可以添加WHERE db1.TABLE_NAME IS NULL OR db2.TABLE_NAME IS NULL以仅查看数据库之间的差异.