Sql server 管理更新多个数据库的迁移的最佳做法?

Sql server 管理更新多个数据库的迁移的最佳做法?,sql-server,continuous-integration,linked-server,database-migration,Sql Server,Continuous Integration,Linked Server,Database Migration,我的团队正在评估用于管理数据库迁移/数据库重构的工具和流程,如Martin Fowler、Pramod Sadalage等人所述。我们对自动化、可重复、可测试的流程感兴趣,因此我们对每次部署时手动运行SQL Compare之类的技术不感兴趣。我们目前正在使用CruiseControl.NET进行持续集成 我们的生产环境有多个SQL Server 2000数据库服务器,它们之间有复制。因此,我们的迁移将对源数据库服务器和目标数据库服务器上的模式进行更改 要使用dbdeploy之类的工具执行这种迁移

我的团队正在评估用于管理数据库迁移/数据库重构的工具和流程,如Martin Fowler、Pramod Sadalage等人所述。我们对自动化、可重复、可测试的流程感兴趣,因此我们对每次部署时手动运行SQL Compare之类的技术不感兴趣。我们目前正在使用CruiseControl.NET进行持续集成

我们的生产环境有多个SQL Server 2000数据库服务器,它们之间有复制。因此,我们的迁移将对源数据库服务器和目标数据库服务器上的模式进行更改

要使用dbdeploy之类的工具执行这种迁移,似乎需要对其中一台服务器运行迁移,并且必须将其他服务器添加为链接服务器。因此,针对主服务器运行的单个脚本可以针对任何链接服务器执行DDL


我的问题是:这种方法是否被视为最佳实践,或者是否有更好的技术来应用涉及多个数据库服务器的迁移?

我看不出这种方法有任何固有的错误,但是在设置它时,请确保测试其中一个链接服务器关闭时会发生什么。如果一台服务器发生故障,您不希望回滚所有其他服务器,并且您确实希望知道这些更改没有应用到该服务器

当然,对于任何迁移来说,第一个最重要的最佳实践是确保在开始迁移更改之前有一个可靠的备份过程。

Visual Studio 2008(Team Edition,特别是GDR)可以根据定义的架构/元数据文件处理架构的自动部署,您可以将该文件部署到服务器。这可以包括在构建/部署过程中。但是,我认为在复制和模式更改方面仍然存在一个问题—没有任何包能够理解/了解您的复制设置


例如,我们在订阅服务器上使用自定义复制过程,尽管模式更改会从发布服务器传播,但有时必须根据现有的任何自定义复制手动编写更改脚本。如果您不使用自定义复制过程,我会说这是一种方法。

您可以尝试和的组合:在DB服务器上安装Chinchillin代理,并让它在部署过程中执行Wizardby迁移脚本


不过,这种集成正在进行中:)

在红门,我们现在有了一个使用SQL比较和SQL源代码控制的可重复迁移解决方案。因此,SQLCompare命令行可用于支持连续集成过程

目前这是一个早期的访问构建,因此我们渴望获得尽可能多的反馈