【发布时间】:2011-09-20 06:38:27
【问题描述】:
我正在使用包括 77 个数据库的 SQL Server 2000,我想将它们迁移到新的 SQL Server 2008 R2。
我可以使用附加或恢复命令单独执行此操作。有没有什么脚本可以将77个数据库迁移到安装了SQL Server 2008 R2的新服务器上。
谢谢
【问题讨论】:
标签: sql sql-server sql-server-2000 sql-server-2008-r2
我正在使用包括 77 个数据库的 SQL Server 2000,我想将它们迁移到新的 SQL Server 2008 R2。
我可以使用附加或恢复命令单独执行此操作。有没有什么脚本可以将77个数据库迁移到安装了SQL Server 2008 R2的新服务器上。
谢谢
【问题讨论】:
标签: sql sql-server sql-server-2000 sql-server-2008-r2
您可以编写脚本循环备份并在另一台服务器上恢复
只要备份文件对两台服务器都可见。这将允许 WITH MOVE 选项允许不同的驱动器/文件夹。
备份也比 MDF/LDF 小,复制也更少
【讨论】:
您需要制作自己的脚本,因为您确实想做的不仅仅是备份和恢复。 您可能想做的其他事情是运行 DBCC UpdateUsage、设置兼容级别、更新统计信息、使用 Data_Purity 运行 DBCC CheckDB、将页面验证选项更改为校验和。您可能还需要处理复制和全文目录。所有这些东西可能都需要进入你的脚本。
您需要设置一个脚本来执行之前在数据库上提到的所有/部分/更多的事情,然后扩展您的脚本以循环访问您的所有数据库。这可以使用批处理文件或 powershell 文件的组合并利用 sqlcmd 来完成。
例如,这是我在将备份恢复到新服务器后运行的一个脚本。这是通过 sqlcmd 从 Windows 批处理文件调用的。
USE [master]
去
ALTER DATABASE [$(DATABASENAME)] 设置 COMPATIBILITY_LEVEL = 100
ALTER DATABASE [$(DATABASENAME)] SET PAGE_VERIFY CHECKSUM WITH NO_WAIT 去吧
使用 [$(DATABASENAME)]
去 声明@DBO 系统名
--谁是sa用户
选择@DBO = 名称 来自 sys.server_principals 其中 principal_id = 1
--分配数据库所有者
exec ('sp_changedbowner ''' + @DBO +'''') 去
--修正计数
dbcc 更新使用 (0) 走 --检查数据库是否包含列值完整性
dbcc checkdb(0) 使用 Data_Purity、ALL_ERRORMSGS、NO_INFOMSGS 去
--确保统计数据是最新的
执行 sp_updatestats
去
【讨论】:
【讨论】: