【问题标题】:Tool to compare two different tables比较两个不同表格的工具
【发布时间】:2013-04-03 06:24:45
【问题描述】:

我需要比较大约的结构。 SQL Server 2005中的50个表,并编写T-Sql脚本使它们相等。每个表在同一个数据库中都有其副本,唯一的区别是名称和结构(例如,必须将原始“tableName”与“tableName_copy”进行比较,而“tableName_copy”缺少约束、PK、FK、触发器等) .

我知道市场上有很多工具(免费和商业)来比较和准备 SQL 脚本,但它们的问题是它们可以比较两个数据库中具有相同名称的表,而不能选择比较哪些表,如果他们的名字不同,就更少了。

我想知道是否存在这样的工具(如果它们是免费的或开源的,那就太好了)来为选择的不同名称的表自动生成脚本。如果有人在分享他/她的经验之前做过类似的工作,我将不胜感激!

【问题讨论】:

    标签: sql-server sql-server-2005


    【解决方案1】:

    您能否采取不同的方法,将您的 tablename_copys 复制到第二个数据库中,但将它们重命名为 tablename,然后运行您最喜欢的比较工具?

    【讨论】:

    • 感谢 Dan,这实际上是个好主意。但是在生成比较脚本并更新“_copy”表之后,我需要将该表与数据一起移动到旧数据库中(删除原始表,因为“_copy”表包含所需的数据)。知道如何实现这一点吗?这些将是重复性任务(每月执行一次),因此“通过脚本”解决方案会比手动解决方案更好:)
    • 有趣。架构是否会有所不同,还是只是需要比较的数据?您是在对比较做出决定,还是只有可自动化的规则?
    • 嗯,故事要长得多。有一个大型数据库,包含 1600 多个表、600 多个 SP 和许多其他对象(作业、触发器等等),供多个应用程序使用。需要“剥离”其中一个应用程序,只留下这个特定应用程序使用的数据库对象和模式。分析这个应用程序并确定它使用哪些 DB 对象相对容易,但问题出现在清理剩余 200 多个表中的数据时(50 多个表每个表有 12MM+ 记录)。我们发现最快的方法是select into tableCopy 方法。我们正在考虑的另一个选择是使用 ETL。
    • 澄清一下:select into tableCopy 不会创建完整的表结构(只有一个带有列的表)。没有约束、触发器等。
    • 我明白了。似乎其中大部分都可以直接自动化,但数据清理可能除外。也许其中一个比较工具将能够为该部分生成一个脚本,尽管我对它们中的任何一个都没有这种水平的经验。希望其他人可以在那里插话。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多