【问题标题】:How to manage/ track changes to SQL Server database without compare tool如何在没有比较工具的情况下管理/跟踪对 SQL Server 数据库的更改
【发布时间】:2013-12-12 23:31:17
【问题描述】:

我作为外包开发人员从事一个项目,我无法访问测试和生产服务器,只能访问开发环境。

要部署更改,我必须创建 sql 脚本,其中包含要在每台服务器上为我希望部署的功能所做的更改。

示例:

  • 当我对数据库进行每次更改时,我会将脚本保存到一个文件夹中,但有时这还不够,因为我发送了一个脚本来更改视图,但忘记包含我在另一个中创建的新表功能。

  • 另一种情况是通过 SSMS GUI 更改表并忘记使用已更改或新列创建脚本,之后必须发送脚本来更新测试中的表。

由于某些功能可以发送用于测试,而其他功能可以直接用于生产(例如:查询以提供 excel 文件),因此很难跟踪我必须发送到每个环境的内容。

由于部署团队只是执行我发送给他们的脚本来更新数据库,我如何在没有比较工具的情况下管理/跟踪对 sql server 数据库的更改?

[编辑]

我目前使用的工具是 SSMS、VS 2008 Professional 和 TFS 2008。

【问题讨论】:

  • 当您说没有比较工具时,您是什么意思?当我处于像您这样无法访问生产服务器的情况时,我会简单地保留一个电子表格,其中包含我所做的更改列表。我还将确保需要脚本的每个更改都有与之关联的更改。我只是手动完成的。没有一个工具来为你跟踪事情,除了自己做之外还有什么?
  • 我的意思是没有像 Red Gate 的 SQL 比较或 SQL 数据比较这样的工具,因为我无法访问其他服务器。我正在尝试跟踪更改,但这很难(恕我直言),因为您可以将功能子集发送到不同的环境。以这种方式跟踪更改需要相当长的时间,我正在寻找更好的方法。
  • 使用 SQL 比较,您可以将当前版本的数据库架构与备份中的架构进行比较,因此您实际上不需要访问测试或生产服务器
  • 我们无权访问备份。目前我们正在从生产中备份,但在我开始从事这个项目之前,已经有几个开发人员更新了。

标签: sql sql-server deployment compare


【解决方案1】:

我可以告诉您 xSQL Software 是如何使用我们的工具做到这一点的:

  • 部署团队有一个自动化流程,该流程拍摄暂存和生产数据库的模式快照,并在每晚将快照转储到开发团队有权访问的共享上。
  • 每天早上,开发人员都有可用的生产和暂存数据库的最新模式快照。他们使用我们的Schema Compare tool 将开发数据库与暂存/生产快照进行比较并生成更改脚本。

注意:要获取架构快照,您可以使用架构比较工具或我们的架构比较 SDK。

【讨论】:

    【解决方案2】:

    我想说您可以将测试和生产服务器的结构副本作为额外的开发数据库,​​并记住在发送内容时始终应用更改。

    在这些数据库上,您可以建立触发器来捕获所有 DDL 事件并将它们放入附有 getdate() 的表中。有了它,您应该能够很容易地处理更改,并且一些简单的比较也将更容易应用。

    【讨论】:

    • 我们无权访问备份。不幸的是,部署团队在提出备份请求时大惊小怪......不友好的敌人......
    【解决方案3】:

    专门研究 SQL 格式的 Liquibase,看看它是否能满足您的需求。我将它用于我们的数据库,它很棒。

    您可以将所有对象存储在单独的脚本中,但是当您执行 Liquibase“构建”时,它将生成一个 SQL 脚本,其中包含您所做的所有更改。真正重要的部分是让您的 Liquibase 配置以正确的依赖顺序放置对象。例如,表是在外键约束之前创建的。

    http://www.liquibase.org/

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多