SQL Server 2000到SQL Server 2008 R2的迁移

时间:2011-06-22 10:37:59

标签: sql sql-server sql-server-2000 sql-server-2008-r2

我正在使用SQL Server 2000,包括77个数据库,我想将它们迁移到新的SQL Server 2008 R2。

我可以使用attach或restore命令单独执行此操作。是否有任何脚本可以将77个数据库迁移到安装了SQL Server 2008 R2的新服务器。

谢谢

3 个答案:

答案 0 :(得分:2)

您可以编写一个脚本来循环备份并在另一台服务器上恢复

只要备份文件对两个服务器都可见。这将允许WITH MOVE选项允许不同的驱动器/文件夹。

备份也小于MDF / LDF,以减少复制

答案 1 :(得分:2)

您需要生成自己的脚本,因为您真的想做的不仅仅是备份和还原。 您可能想要做的其他事情是运行DBCC UpdateUsage,设置兼容级别,更新统计信息,使用Data_Purity运行DBCC CheckDB,将页面验证选项更改为校验和。您也可以使用复制和全文目录进行处理。所有这些都可能需要进入你的脚本。

您需要设置一个脚本,该脚本执行先前在数据库中提及的所有/部分/更多内容,然后扩展您的脚本以遍历所有数据库。这可以使用批处理文件或PowerShell文件的组合并使用sqlcmd来完成。

例如,这是我将备份还原到新服务器后运行的一个脚本。这是通过sqlcmd从Windows批处理文件中调用的。

USE [master]

GO

ALTER DATABASE [$(DATABASENAME)] SET COMPATIBILITY_LEVEL = 100

ALTER DATABASE [$(DATABASENAME)]使用NO_WAIT设置PAGE_VERIFY CHECKSUM GO

使用[$(DATABASENAME)]

转到 声明@DBO sysname

- 谁是sa用户

选择@DBO = name 来自sys.server_principals 其中principal_id = 1

- 为数据库所有者分配sa

exec('sp_changedbowner'''+ + DBO +'''') 去

- 修正计数

dbcc updateusage(0) 走 - 检查数据库是否包含列值完整性

dbcc checkdb(0)使用Data_Purity,ALL_ERRORMSGS,NO_INFOMSGS 去

- 确保统计信息是最新的

exec sp_updatestats

开始

答案 2 :(得分:0)

您可以使用Sql Compare等软件工具。

如果没有,我会单独编写脚本。

你可以绕过内部sysobjects table并构建一个组合脚本,但我不会。