【发布时间】:2012-03-19 21:46:33
【问题描述】:
我很高兴能够使用 DAC Fx 和声明式数据库开发。对我来说主要的障碍是如何处理跨多个不同版本的模式的复杂数据迁移。在旧世界中,我们可以简单地按顺序运行我们所有的升级脚本,这可以保证架构在数据迁移时处于正确的状态。当升级路径是动态的时,这是如何工作的?
例如,假设现有实例上有多个版本的架构 (DACPAC1-4):
- DACPAC1:tableA 存在并且有有价值的客户数据
- DACPAC2:tableA 已弃用并由 tableB 和规范化 tableC 替换;添加新的
表D
- 部署后脚本:将数据从表 A 移动到新表 B 和 表C;删除表A
- DACPAC3:tableC 有一个新的可空列 X
- 部署后脚本:根据 tableD 填充可为空的列
- DACPAC4:tableC.columnX 不可为空
如果我需要能够支持将 DACPAC1-3 服务器升级到最新的 DACPAC4,我现在必须以足够聪明的方式编写我的部署前和部署后脚本,以检测目标上当前和正确的 DACPAC按顺序处理数据迁移步骤。此外,我不能简单地重复使用我最初编写的幼稚的部署后脚本,因为它们依赖于模式的中间版本。
提前感谢您的任何建议!
【问题讨论】:
标签: data-migration data-tier-applications dac