【问题标题】:Find tables that are not in another database sql查找不在另一个数据库中的表 sql
【发布时间】: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


【解决方案1】:

为了清晰和社区的利益。 Sean Lange 在 OP 上的 cmets 中发布的答案是:

为什么要在这里使用 msforeachdb?你说你想比较 两个已知数据库中的表。你可以比较 sys.tables 和 sys.columns 对两个数据库的查询。另一种选择是 正在使用 redgate 的 sql 比较。它完成了所有这些以及检查索引 等等。

【讨论】:

  • 这对我有用 :) SELECT Table_Name from [databasename1].INFORMATION_SCHEMA.TABLES where TABLE_NAME not in (Select Table_Name from [databasename2].INFORMATION_SCHEMA.TABLES )
猜你喜欢
  • 2022-12-14
  • 2016-05-06
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
相关资源
最近更新 更多