繁体   English   中英

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

[英]How to manage/ track changes to SQL Server database without compare tool

我以外包开发人员的身份从事一个项目,在该项目中,我仅能访问开发环境的测试和生产服务器。

要部署更改,我必须创建sql脚本,其中包含要在每个服务器上针对我希望部署的功能进行的更改。

例子:

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

  • 另一种情况是通过SSMS GUI更改表,而忘记创建具有已更改或新列的脚本,后来不得不发送脚本来更新测试中的表。

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

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

[编辑]

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

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

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

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

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

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

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

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

http://www.liquibase.org/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM