【问题标题】:Comparing similar tables in different SQL Server databases比较不同 SQL Server 数据库中的相似表
【发布时间】:2021-01-29 13:46:28
【问题描述】:

在谷歌搜索比较位于两个不同数据库中的两个表(相同模式)的方法时,我遇到了tablediff.exe 实用程序,它非常适合创建脚本以在表 B 中进行更改以使其匹配表A.

但是,就我而言,仅当 B 中的数据早于 A 的数据时,我才需要对表 B 进行更改。否则,更改需要应用于表 A。

有没有办法使用tablediff.exe,如果没有,是否有任何免费的命令行替代方案?

【问题讨论】:

  • 请用您正在使用的数据库标记您的问题。同时提供样本数据和期望的结果。
  • 你可以尝试链接服务器,这样你就可以在两个不同的服务器之间进行查询。
  • 感谢@JiachengGao,这就是我正在做的事情,但是表很大,服务器通过 WAN 连接,这使得过程太慢。不知何故,tablediff 能够非常快速地进行比较,但它的问题是它无法决定应该更新哪个表上的哪条记录。
  • @Osprey,我对这个工具不太熟悉,你可以将 tablediff 实用程序的 -sourceserver 选项设置为第一台服务器,将 -destinationserver 选项设置为第二台服务器。我找到了一些帖子可能可以解决您的问题,您介意检查一下吗? stackoverflow.com/questions/1722846/…
  • @JiachengGao 问题是tablediff是单向的,即有源表和目标表。我需要更改是双向的,并取决于上次更新的记录。

标签: sql sql-server compare


【解决方案1】:

Visual Studio 的社区(免费)版本具有用于 SQL 项目的“数据比较...”。在 SQL Server 对象资源管理器中右键单击对象并指定源和目标...

这里是一些屏幕截图

在表上的 SQL Server 对象资源管理器中右键单击(在 VS(暗模式)SQL Server 项目中)进行比较。

连接到 2 个实例

然后选择对象,瞧!

【讨论】:

  • 感谢@SteveC 的详尽回答。我刚刚尝试过,虽然它有它的用途,但这似乎与 Tablediff 有相同的问题,即变化是单向的。我需要决定哪个表可以从另一个表复制记录,以取决于哪些数据较旧。一张表可能有较新的记录,而同时有较旧的记录。换句话说,同步操作可能会在一次操作中从两个表中复制记录。
  • 好吧,您对数据差异特别感兴趣。来自 Quest、Redgate 等的付费供应商工具有“数据差异”,但遗憾的是没有 VS
  • 其中一些供应商提供免费试用 :) 像小狗一样免费
【解决方案2】:

我无法评论上面的对话,但要添加到 SteveC cmets,Visual Studio 确实有一个数据比较实用程序。

工具 > SQL Server > 新数据比较

【讨论】:

  • 谢谢@Terry,但这是 SteveC 在下面建议的,不幸的是它不是我想要的,因为它是单向的。
猜你喜欢
  • 1970-01-01
  • 2011-04-11
  • 1970-01-01
  • 1970-01-01
  • 2015-12-28
  • 2022-01-23
  • 2013-07-18
  • 1970-01-01
  • 2021-04-24
相关资源
最近更新 更多