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

问题描述 投票:0回答:2

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

sql sql-server tsql
2个回答
0
投票

你可以使用很多工具。我更喜欢Red Gate工具,但是VS也可以工作。

数据是一个非不合逻辑的推论,客户认可也是一种非不合逻辑的推论。

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

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

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


0
投票

在SQL Server Management工作室中可能提供了最简单的方法,而不使用任何花哨的第三方工具。

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

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

如果你还在读:)

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

  1. 在对象资源管理器中,展开“数据库”,右键单击数据库,指向“任务”,然后单击“生成脚本”。按照向导中的步骤编写数据库对象的脚本。
  2. 在“选择对象”页面上,选择“脚本”整个数据库和所有数据库对象
  3. 在“设置脚本选项”页面上,选择“将脚本保存到特定位置”。
  4. 要指定高级脚本选项,请在“将脚本保存到特定位置”部分中选择“高级”按钮。
  5. 棘手的步骤 - 在“高级脚本选项”弹出窗口中为“包含描述性标题”选择“False”。 enter image description here 这将删除不需要的时间戳,这在比较脚本时是一个很好的帮助。
  6. 在“摘要”页面上,查看您的选择。单击“下一步”以生成所选对象的脚本。
© www.soinside.com 2019 - 2024. All rights reserved.