【IT168 专稿】最近我接到公司的一个任务,需要在2010年一季度将部分生产数据库从SQL Server 2005升级到SQL Server 2008,由于公司的业务几乎不能容忍停机,每秒都有大量的资金流进流出,任何意外都可能造成严重的损失,意味着维护,升级和迁移操作必须非常快地完成,使业务几乎没有中断,我使用过SQL Server镜像作为迁移的手段,也使用过SQL Server镜像作为转移到新硬件的解决方案,SQL Server镜像也是升级到新版本的一个有效方法,在企业版和标准版中都含有镜像功能。
测试中的发现
SQL Server 2005 SP3企业版镜像到SQL Server 2008企业版没有问题,但有一个限制,那就是镜像时版本必须对应,如果你想将SQL Server 2005 SP3标准版镜像到SQL Server 2008企业版,那是不可能的。我测试了企业版到企业版的镜像,包括数据和对象的操作及创建,我还测试了异步镜像功能,所有测试都顺利通过了,我的测试环境如下图所示。
图1 测试环境
观察到的缺点
使用快照镜像时会受到限制。因为SQL Server 2005的数据库版本是611,SQL Server 2008的数据库版本是655,如果你不将其升级到655,就不能创建快照。
镜像是单向的。你不能将SQL Server 2008通过镜像恢复成SQL Server 2005,没有降级镜像的办法可用。
一旦开始升级,就无法停止,即当你输入:
RESTORE DATABASE junk WITH recovery
你的数据库将会输出:
Converting database 'JUNK' from version 611 to the current version 655.
Database 'JUNK' running the upgrade step from version 611 to version 621.
Database 'JUNK' running the upgrade step from version 621 to version 622.
Database 'JUNK' running the upgrade step from version 622 to version 625.
???
Database 'JUNK' running the upgrade step from version 652 to version 653.
Database 'JUNK' running the upgrade step from version 653 to version 654.
Database 'JUNK' running the upgrade step from version 654 to version 655.
RESTORE DATABASE successfully processed 0 pages in 1.825 seconds (0.000 MB/sec).
Database 'JUNK' running the upgrade step from version 611 to version 621.
Database 'JUNK' running the upgrade step from version 621 to version 622.
Database 'JUNK' running the upgrade step from version 622 to version 625.
???
Database 'JUNK' running the upgrade step from version 652 to version 653.
Database 'JUNK' running the upgrade step from version 653 to version 654.
Database 'JUNK' running the upgrade step from version 654 to version 655.
RESTORE DATABASE successfully processed 0 pages in 1.825 seconds (0.000 MB/sec).
一旦故障转移到新的镜像,就没有办法回到2008了,这意味着故障转移是最终性质的,唯一的办法是再次从2005镜像到2008。