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

我想知道在集成过程中自动确保对本地数据库的更改上传到测试服务器时有哪些选项。现在,我不太确定是否要采用 DBGhost 自动同步架构更改的方向,我很乐意用本地数据库的副本替换测试服务器上的数据库。

我在这里有什么选择?

编辑:进一步的调查表明 RedGate SQL 产品对此很有帮助。不过它们并不便宜。他们有一份关于在持续集成过程中使用他们的产品的很好的白皮书: http://downloads.red-gate.com/HelpPDF/ContinouslyIntegrationForDatabasesUsingRedGateSQLTools.pdf

有帮助吗?

解决方案

首先,我认为你的数据库应该包含在你的源代码控制策略中。实现这一目标的基本原则已被完美地总结为 K.斯科特·艾伦系列. 。您还可以检查 Martin Fowler 的进化数据库设计. 。如需更多实用信息,请查看以下问题的答案 您应该如何从源代码控制构建数据库?.

正如我在 我的答案, ,我维护两套脚本:一套可以从头开始构建数据库,一套可以将给定数据库从一个版本升级到最后一个版本。作为 CI 策略的一部分:

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