如何在没有比较工具的情况下管理/跟踪对SQL Server数据库的更改

时间:2013-09-20 14:12:30

标签: sql sql-server deployment compare

我正在开发一个外包开发项目,我只能在开发环境中访问测试和生产服务器。

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

示例:

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

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

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

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

[编辑]

我使用的当前工具是SSMS,VS 2008 Professional和TFS 2008。

3 个答案:

答案 0 :(得分:1)

我可以告诉你我们xSQL软件如何使用我们的工具做到这一点:

  • 部署团队有一个自动化流程,该流程获取登台和生产数据库的模式快照,并将快照每晚转储到开发团队可以访问的共享上。
  • 每天早上,开发人员都可以获得可用的生产和登台数据库的最新架构快照。他们使用我们的Schema Compare tool来比较dev数据库和登台/生产快照,并生成更改脚本。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

特别以SQL格式查看Liquibase,看看它是否能满足您的需求。我将它用于我们的数据库,这很棒。

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

http://www.liquibase.org/