这是一个问题,对于那些在一个开发团队中开发的人,你们所有人都有单独的数据库。您正在使用源控件和其他工具版本对数据库进行版本处理,这些工具将自动将DEV数据库最新到最新版本的数据库(架构,数据,SP,功能等)。

好的,不错!可是等等!如果您正在使用软件的4.0版开发,但是现在您需要将分支切换到3.2分支以修复错误?到目前

我想,如果您付出额外的精力来编写回滚脚本以及更改脚本,则可能会起作用。但这似乎是很多工作 - 真的值得吗?

有帮助吗?

解决方案

更容易的是创建一个新的3.2分支数据库,并在处理3.2个分支代码时使用它。对我来说,要求每个开发人员都有一个数据库可以使用,这似乎是不合理的。

其他提示

我要肢体,并假设您将数据库视为二进制文件?如果您的所有数据库资产都是建设性代码(例如SQL脚本和/或文本数据转储)的形式,那么该解决方案将很简单,如Mark所建议:将这些资产存储为开发分支的一部分。要在3.2版上使用,请切换分支,重新运行创建脚本和PRESTO,3.2数据库。合并与常规代码一样容易(或者痛苦,具体取决于您选择的版本控制系统)。

以下是在这种模式下工作的一些建议:

  • 如果从文本中创建数据库实例太慢,请在共享磁盘卷上进行缓存,并由所有模式 /数据文件(或其MD5总和)的内容键入。
  • 编写一个预加压钩,以确保开发人员实例中的架构和数据转储与版本控制下的架构相同。这样可以防止人们使用交互式工具对开发数据库进行更改,然后忘记提交它们。
  • 您提到更改脚本;将它们视为责任。尽管您的部署场景可能需要它们(例如,想要升级就地升级的客户),但它们从数据库的版本历史记录中复制了信息,并且根据Murphy的定律重复,意味着更早或稍后。尝试使用“ diff”从版本的数据库资产中自动生成更改脚本;或者,如果无法实现这一目标,请将一些严重的单位测试用于数据库升级。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top