5

我们正在尝试开始使用 SQL 源代码控制并有一些问题。

这就是我的目标。这看起来会起作用吗?

  1. 修改开发数据库表/过程
  2. 提交到开发 PC 上的开发 git 分支
  3. 将更改推送到中央仓库
  4. 对每个更改重复步骤 1-3
  5. 将开发分支合并到测试分支
  6. 在测试分支上使用 SQL 源代码控制“获取最新”
  7. 将更改应用于测试数据库
  8. 重复步骤 5 - 8,但从测试到上线

注意: - 使用“共享数据库”开发模式。

问题:

  • 这看起来会起作用吗?
  • SQL Source Control 能否将更改应用到测试和实时数据库
    • 还是我需要为开发服务器购买一份 SQL 比较来执行此任务?

在此处输入图像描述

4

3 回答 3

2

太好了,您正在从存储库部署数据库更改的版本化副本,在我看来,这确实是一种很好的持续交付实践。

对您的问题有一些建议(我戴着红门帽)

  • 通常不建议将 SQL 源代码控制连接到您的实时环境。它会轮询以查找更改,这可能不是您在实时系统上想要的。建议改为使用 SQL 比较来一次性部署到 UAT/生产系统。或者,您可能对Red Gate 部署管理器产品感兴趣。

  • 您在上面询问了测试中的共享/专用模式。如果您在开发分支中为开发人员使用共享数据库,然后在测试分支中使用专用模型,这并不重要。如果对测试数据库的唯一更改来自一个地方(例如您的 git 部署),那么在专用模式下运行该数据库可能会更好。

我已经绘制了一个图表,对你的进行了一些调整。不确定您是否使用 CI 服务器,但我已经添加了适合该过程的位置。此图假定两个开发人员的专用模式,但这可能是一个共享数据库。

Red Gate SQL 源代码控制 持续数据库交付

于 2013-10-14T12:01:51.663 回答
2

是的,我相信这应该可以。传统上,合并分支的问题会导致迁移脚本出现问题,尽管 Migrations V2 的测试版正在解决这个问题以及其他问题。

如果您有某种类型的构建系统链接到您的存储库,您可能会使用SQL 自动化包将其部署到测试的后半部分自动化- 例如,您可以通过合并然后自动触发 TeamCity 之类的东西更新测试以节省您手动执行的操作。

于 2013-10-10T14:44:44.690 回答
0

是的,只要您使用正确的连接模型,这似乎确实有效。

Red Gate 不认为这是最佳实践(原因如下)。他们希望您也购买 SQL Compare。

您可以使用专用模型简单地连接到所有数据库,但您无法查看谁修改了特定对象,但您可以合并实时补丁。

我更喜欢这个:

  • 开发人员使用共享模型进行连接
    • 然后你可以看到谁修改了每个 table/proc/etc。
  • 我们还使用共享模型在开发服务器上保留一个工作文件夹。
    • 这使我们可以使用 get-latest 来使用实时补丁更新 dev。

如果发布混合模型功能可能会更简单(在此处投票)。

显示变化路线的图表

于 2013-10-16T13:54:29.007 回答