我的团队正在评估管理数据库迁移/数据库重构的工具和流程,如Martin Fowler,Pramod Sadalage等所述。人。我们对自动化,可重复,可测试的流程感兴趣,因此我们对每次部署时手动运行SQL Compare等技术不感兴趣。我们目前正在使用CruiseControl.NET进行持续集成。
我们的生产环境有多个SQL Server 2000数据库服务器,它们之间有复制。因此,我们的迁移将对源数据库服务器和目标数据库服务器上的模式进行更改。
要使用dbdeploy等工具执行此类迁移,我们似乎需要针对其中一台服务器运行迁移,我们必须将其他服务器添加为链接服务器。因此,针对主服务器运行的单个脚本可以针对任何链接的服务器执行DDL。
我的问题是:这种方法会被视为最佳做法,还是有更好的技术来应用触及多个数据库服务器的迁移?
答案 0 :(得分:1)
Visual Studio 2008(团队版,特别是GDR)可以根据您可以部署到服务器的已定义架构/元数据文件来处理架构的自动部署。这可以包含在您的构建/部署过程中。但是,我认为复制和架构更改仍然存在问题 - 没有任何程序包可以理解/了解您的复制设置。
例如,我们在订阅服务器上使用自定义复制过程,虽然架构更改从发布者传播,但我们有时必须手动编写更改,具体取决于我们所拥有的任何自定义复制。如果你不使用自定义复制过程,我会说这是要走的路。
答案 1 :(得分:0)
我没有看到这种方法存在任何内在错误,但是在设置时一定要测试当其中一个链接服务器关闭时会发生什么。如果发生故障,您不希望回滚所有其他服务器,并且您确实想知道更改未应用于该服务器。
当然,任何迁移的第一个也是最重要的最佳做法是确保在开始迁移变更之前有一个可靠的备份过程。
答案 2 :(得分:0)
您可以试用Chinchillin和Wizardby的组合:在数据库服务器上安装Chinchillin代理,让它在部署过程中执行Wizardby迁移脚本。
此集成正在进行中,但是:)
答案 3 :(得分:0)
在Red Gate,我们现在有了一个可重复的迁移解决方案,它使用SQL Compare和SQL Source Control。因此,SQL Compare命令行可用于支持持续集成过程。
http://www.red-gate.com/MessageBoard/viewtopic.php?t=14107
目前这是一个早期访问版本,因此我们希望获得尽可能多的反馈。