【发布时间】:2015-04-28 13:15:41
【问题描述】:
我有两个不同的数据库,在 database1 中有 122 个表,在 database2 中有 125 个表(两个数据库中的表名相同)。与 database2 中的表 (tblusers) 相比,database1(tblusers) 中的一个表有一个额外的列。 现在我如何找到 database2 中的额外表并在表中找到额外的列。 (通过比较两个数据库中的两个表)。
Msforeachdb 会很棒,否则是一个正常的查询。
【问题讨论】:
-
您使用的是哪个数据库? mysql sql 服务器
-
Sql server 数据库。
-
为什么要在这里使用 msforeachdb?您说您正在尝试比较两个已知数据库中的表。您可以将 sys.tables 和 sys.columns 与针对这两个数据库的查询进行比较。另一种选择是使用 redgate 的 sql compare。它完成了所有这些,加上检查索引等。
-
如果你有 Visual Studio,你也可以做一个 Schema Compare。
-
当然这没什么神奇的。您将从 db1 上的 sys.tables 中提取表名,并将连接保留到 db2 上的 sys.tables ,其中 db2.name 为空。或任何其他用于查找缺失行的标准方法。或者你甚至可以做一个完整的外连接来获取两者的所有表。
标签: sql sql-server database