1

将数据库更改管理添加到持续集成场景的最佳方法是什么?我已经阅读了一些问题和答案,但它们是从 2009 年开始的,并且肯定有一些同时开发的技术和工具。

我正在使用 TFS 2010,但这不是重点。我对如何在持续集成的同时管理数据库更改的概念感兴趣。有任何想法吗?

4

5 回答 5

2

我会推荐带有 SQL Source and Compare 的 Red Gate 堆栈——它绝对可以为拥有一个完整的带有 sql 集成的 CI 环境大有帮助

于 2013-02-14T15:54:48.873 回答
2

我们已经成功地将Liquibase用于数据库变更管理。

使用最佳实践,您可以为数据库定义多个更改日志,并在 CI 服务器(在我们的示例中为 TeamCity)的帮助下使所有环境保持最新。

于 2013-02-14T18:21:58.367 回答
1

除了 Red Gate 工具,您还可以尝试使用ApexSQL DiffA​​pexSQL 版本来完成同样的事情。

这些工具中的任何一个都不会出错,如果您想要第三个选项,您可以查看 Idera 的工具。

请注意,尽管所有这些都是商业工具,但它们都有 14-30 天的试用期。

于 2013-02-21T09:34:09.753 回答
0

我们刚刚发布了用于 SQL Server 的数据库强制变更管理解决方案(商业解决方案)DBmaestro TeamWork。

它对真实的数据库对象(而不是与数据库断开连接的脚本)强制执行版本控制过程

它使用基线感知分析生成 sql 脚本以促进更改,该分析了解更改的性质,例如:更改应该被忽略,因为它来自不同的分支或关键修复,或者存在冲突,您必须合并过程代码。

免责声明——我在 DBmaestro 工作。

话虽如此,我鼓励您阅读资深数据库专家 Ben Taylor 对数据库强制管理解决方案的全面、公正的评论,他在 LinkedIn https://www.linkedin.com/pulse/article/20140907002729-287832-solve-数据库更改管理与 dbmaestro

于 2014-10-07T19:36:05.243 回答
0

我们有一个采用以下方法的新解决方案:

  1. 开发人员编写单独的 SQL 更改脚本并将其提交到源代码控制。
  2. 我们的程序 ( OneScript ) 从源代码管理中提取更改脚本文件,对其进行过滤和排序,并生成单个发布脚本文件。(效果比听起来好。)
  3. 然后将该发布脚本文件应用于数据库以进行发布。

我们的主页更详细解释了这个过程。它还有一个示例的链接,该示例从 Subversion 挂钩自动执行这些步骤(但这也可能来自 TFS)。提交后不久,开发人员会收到一封电子邮件,说明发布是成功还是有错误。包括 PowerScript 代码。

这个想法是,最终您将拥有一个经过全面测试的发布脚本,并且完全相同的脚本会在您的所有 pre-prod 环境中移动,并最终用于将发布应用到您的 prod 数据库。

免责声明 - 我为制作 OneScript 的公司工作。

于 2017-03-12T20:21:35.027 回答