如何在两个环境中比较表结构

时间:2018-02-28 14:12:43

标签: sql sql-server tsql

我刚刚继承了一个相当大的数据库,并且只是被告知Dev和Prod之间的表结构不匹配。这导致了我们的问题,因为为Dev开发的代码最终在Prod中崩溃,这导致了一些非常灾难性的版本。
所以,我想找到一种以编程方式比较表,键和索引的方法。添加工具需要客户批准,这是一项挑战。我不能只是复制数据,因为它们有不同的数据集 有没有人有任何脚本可以帮我找出哪些更新?

2 个答案:

答案 0 :(得分:0)

您可以使用相当多的工具。我更喜欢Red Gate工具,但是VS也可以工作。

数据是一种非常规的,客户的批准也是一种非常规的。

只需将这两个表编写成脚本,将它们添加到本地客户端或测试服务器,使用该工具对两者进行比较。

为了扩展Tab Alleman的回应,将Prod向下滚动到Dev通常是SOP。您可以通过bing / google找到有关SDLC的大量信息。

辅助选项是重命名表的Dev版本,脚本输出并将表从Prod“移动”到Dev。将表的Dev版本中的数据插回到具有正确对象名称的新表中。

答案 1 :(得分:0)

  

在不使用任何花哨的第三方工具的情况下,最简单的方法是在SQL Server Management studio中自行提供

以下是简要介绍所涉行动的概念:

  • 步骤1:使用SQL Server Management Studio内置的“生成脚本”选项为Dev和Prod数据库生成完整的数据库脚本。
  • 第2步:使用任何基本文本比较实用程序(如Beyond compare,meld,WinMerge等)比较两个脚本。
  • 第3步:记下差异并制定解决方案。

如果您还在阅读:)

生成数据库脚本的更详细说明:

  1. 在对象资源管理器中,展开数据库,右键单击数据库,指向任务,然后单击生成脚本。按照向导中的步骤编写数据库对象的脚本。

  2. 选择对象页面上,选择脚本整个数据库和所有数据库对象

  3. 在“设置脚本选项”页面上,选择“将脚本保存到特定位置”。

  4. 要指定高级脚本选项,请在“将脚本保存到特定位置”部分中选择“高级”按钮。

  5. 棘手的步骤 - 在高级脚本选项弹出式选择错误 包含描述性头即可。

    enter image description here

    这将删除不需要的时间戳,这在比较脚本时非常有用。

  6. 摘要页面上,查看您的选择。单击下一步以生成所选对象的脚本。