如何在持续集成过程中包含我的数据库?

时间:2009-09-01 07:23:23

标签: database teamcity dbghost

请原谅,今天是我尝试使用TeamCity设置CI环境的第一天。我正在开发一个ASP.NET / SQL Server应用程序,到目前为止一直很好。 MSBuild是我的提供者。

我想知道在自动确保将本地数据库的更改作为集成过程的一部分上载到测试服务器时,选项是什么。现在我不太确定我想朝着DBGhost的方向自动同步架构更改,我很乐意用我本地数据库的副本替换测试服务器上的数据库。

我有什么选择?

编辑:进一步调查显示RedGate SQL产品对此有好处。虽然他们不便宜。他们在持续集成过程中使用他们的产品有一个很好的白皮书:http://downloads.red-gate.com/HelpPDF/ContinuousIntegrationForDatabasesUsingRedGateSQLTools.pdf

1 个答案:

答案 0 :(得分:4)

首先,我认为您的数据库应该包含在源控制策略中。实现这一目标的基本原则在K. Scott Allen series中得到了很好的总结。您还可以查看Evolutionary Database Design by Martin Fowler。有关更多实用信息,请查看How should you build your database from source control?的答案。

正如我在my answer中所写的,我维护了两组脚本:一组可以从头开始构建数据库,另一组可以将给定数据库从一个版本升级到最后一个。作为CI战略的一部分:

  • 应使用这些脚本从头开始重建CI服务器上的数据库。然后,您可以检查脚本是否处于工作状态。
  • 在一个完美的世界中,我应该能够从数据库的N-1版本升级到版本N,并将获得的模式与先前数据库的模式进行比较。我还在努力......
  • 应该在数据库中注入测试数据,允许对您的应用程序进行单元测试(为此可以use bcp)。