我正在研究将我们的数据库纳入源代码管理。我找不到任何关于改造现有dbs以与rh一起使用的最佳方法的信息。
我可以看到创建的表,我应该把它们写出来并添加到我们的数据库中,然后再继续吗?或者我应该得到一个数据库备份并运行带有恢复标志的rh?似乎应该有一些指导方针。
如果你有任何见解,请告诉我。
感谢
你看过PowerUp吗?https://github.com/chucknorris/powerup
这是一个将数据库中的当前项提取为幂等RoundhousE格式的实用程序。
至于表,您可以单独编写脚本,然后将它们放入runAfterCreate表中。
维基上有一些关于这方面的指导——https://github.com/chucknorris/roundhouse/wiki/RoundhousEModes
据我所知,这就是预期的工作流程:
- 创建现有数据库的完整备份
此备份文件是您的基准映像。将文件移动到具有固定位置的文件共享中。Fixed意味着当基线映像更新到新版本时(通常是在成功部署之后),完整路径不会更改。
\BuildServerDataBackupsLegacyDb.bak
- 使用SSMS或PoweruP为"Anytime"数据库对象(存储过程、函数、视图和索引)编写脚本,每个文件一个对象。将脚本移动到名为"存储过程"、"函数"、"视图"one_answers"索引"的目录中
请注意,此时您不应该编写"Onetime"数据库对象的脚本。
做一些实际的工作,包括添加Onetime脚本或更改Anytime脚本。也许可以添加一个新表并更改视图。相应地更新迁移脚本。
使用"RunRestore"模式将更改部署到开发数据库,并验证迁移脚本是否按预期工作。
在这种模式下,在执行迁移脚本之前,将用基线映像替换现有数据库。恢复备份是必要的;否则,RH将不会执行以前执行的迁移脚本,因为开发数据库中的版本信息早于基线信息。只要迁移脚本仍在开发中,您绝对希望能够对其进行更改和测试更改。
- 当您感到足够自信时,使用"正常"模式将更改部署到生产数据库
在这种模式下,RH在执行迁移脚本之前不会恢复任何备份。理论上,生产数据库和基线映像在整个sprint过程中保持不变,因此不需要恢复备份。更不用说它可能会破坏数周/数月的数据。
如果这是第一次部署,RH将创建3个表,用于存储该数据库的版本信息。从现在起,版本信息将包含在您的基线图像中。
- 创建数据库备份
这个备份文件是下一个sprint的新基线映像。