pipe理SQL 2008数据库镜像的工具?

我们正在将大约20个数据库移动到sql 2000的单个实例上,并将其转换为使用数据库镜像的sql 2008 r2环境。

我正在寻找的是一个工具或脚本,可以帮助我轻松地pipe理这些20db的转换和pipe理到这个新的镜像环境。 设置每个数据库有很多步骤,我想尽可能自动化。

编辑:这是我一直在手动做的步骤:

  1. 从旧的SQL 2000服务器到新的SQL 2008服务器上创build相同的用户名/密码。 然后将这些用户/密码同步到另一个具有相同SSID的SQL Server 2008服务器,所以当我们做数据库备份和恢复他们匹配。
  2. 采取每个SQL 2000数据库的备份。
  3. 将它们复制到服务器A.
  4. 将备份还原到服务器A.
  5. 从服务器a备份,复制到服务器b,在那里恢复。
  6. 运行镜像“configuration安全性”向导。
  7. 开始镜像。

我很喜欢能够编写这个脚本,或者有一个工具可以帮我。 谢谢! 保罗

我创build了一系列batch file和SQL脚本来完成以下步骤。 我只包含了用于镜像的脚本,但其他引用的SQL脚本是非常基本的SQL命令(除了恢复数据库脚本,由于我已经实现了这个脚本,有点棘手),创build它们会给你一个机会更改SQLCMD模式variables。 如果你想用你的电子邮件地址在Twitter(@jcumberland)上直接给我发消息,我可以给你发送完整的脚本。 我已经删除了文件名上的完整path。

  • 为数据库设置恢复模式
  • 删除镜像
  • 删除镜像数据库
  • 备份数据库
  • 备份日志
  • 复制bak文件
  • 复制trn文件
  • 恢复数据库备份
  • 恢复日志备份
  • 删除bak文件
  • 删除trn文件
  • 在校长和镜子之间设置镜像
 / * ------------------------------------------------ ------ * /
 - 更换这些值
 / * ------------------------------------------------ ------ * /











 / * ------------------------------------------------ ------ * /
 - batch file1,调用实用程序batch file
 / * ------------------------------------------------ ------ * /
 @echoclosures

设置PRIMARYHOST =
设置MIRRORHOST =
设置INST =
设置DRIVE =
设置DRTARGETDIR =“%DRIVE%:\ MSSQL.1 \ MSSQL \ DATA \”
设置LOGDIR =“%DRIVE%:\ MSSQL.1 \ MSSQL \ DATA \”
设置PORT =
设置PRIMARYINST =%PRIMARYHOST%\%INST%
设置MIRRORINST =%MIRRORHOST%\%INST%

 @echo上


调用drdbsetup.bat%PRIMARYHOST%%MIRRORHOST%%PRIMARYINST%%MIRRORINST%DRIVE%%DRTARGETDIR%%PORT%%LOGDIR%

暂停







 / * ------------------------------------------------ ------ * /
 - batch file2  - 调用SQL脚本
 / * ------------------------------------------------ ------ * /
 rem  - 恢复模式设置为full
 sqlcmd / E / S%3 -i SetRecoveryMode.sql -v DATABASE =“%8”

 rem  - 删除镜像
 sqlcmd / E / S%3 -i MirroringRemove.sql -v DATABASE =“%8”

 sqlcmd / E / S%4 -i MirroringRemoveMirror.sql -v DATABASE =“%8”

 rem  - 完整备份
 sqlcmd / E / S%3 -i BackupDatabaseFull.sql -v BACKUPPATH =“%5:\”-v DATABASE =%8

重新logging备份
 sqlcmd / E / S%3 -i BackupDatabaseLog.sql -v BACKUPPATH =“%5:\”-v DATABASE =%8

 rem  - 将备份文件复制到镜像
复制\\%1 \%5 $ \ *。bak%6 / y
复制\\%1 \%5 $ \ *。trn%6 / y

 rem  - 从主要删除备份文件
 del \\%1 \%5 $ \ * .bak
 del \\%1 \%5 $ \ *。trn

 rem  - 从备份目录恢复数据库
 sqlcmd / E / S%4 -i RestoreDatabase.sql -v BKDIR =%6 -v DATADIR =%6 -v LOGDIR =%9

 rem  - 恢复数据库日志
 sqlcmd / E / S%4 -i RestoreLog.sql -v BACKUPPATH =%6 -v DATABASE =%8

 rem  - 从镜像中删除备份文件
 del%6 \ *。bak
 del%6 \ *。trn

 rem  - build立镜像
 sqlcmd / E / S%4 -i MirroringSetup.sql -v PRINCIPAL =“%3”-v MIRROR =“%4”-v PRINCIPAL_DNS =“%1”。  -v MIRROR_DNS =“%2.yourdomain.local”-v DATABASE_NAME =“%8”-v PORT =%7







 / * ------------------------------------------------ ------ * /
 -  MirroringSetup.sql
 / * ------------------------------------------------ ------ * /


 / * ------------------------------------------------ ----- * /
 - 以委托人身份运行
 / * ------------------------------------------------ ----- * /
 :连接$(PRINCIPAL)
走

 - 创build端点
如果不存在(select * from sys.endpoints where name ='Mirroring')
开始
     CREATE ENDPOINT镜像
    授权[]
    状态=开始作为TCP(
         LISTENER_PORT = $(PORT)
         ,LISTENER_IP = ALL
     )
     FOR DATA_MIRRORING(
        angular色=合作伙伴
         ,AUTHENTICATION = WINDOWS NEGOTIATE
         ,encryption=需要的algorithmRC4
     )
结束
走

 / * ------------------------------------------------ ----- * /
 - 在镜子上运行
 / * ------------------------------------------------ ----- * /
 :连接$(MIRROR)
走

 - 创build端点
如果不存在(select * from sys.endpoints where name ='Mirroring')
开始
     CREATE ENDPOINT镜像
    授权[]
    状态=开始作为TCP(
         LISTENER_PORT = $(PORT)
         ,LISTENER_IP = ALL
     )
     FOR DATA_MIRRORING(
        angular色=合作伙伴
         ,AUTHENTICATION = WINDOWS NEGOTIATE
         ,encryption=需要的algorithmRC4
     )
结束
走

 - build立镜像伙伴关系
 ALTER DATABASE [$(DATABASE_NAME)] SET PARTNER = N'TCP:// $(PRINCIPAL_DNS):$(PORT)'
走

 - 删除镜像监控
如果存在(select * from msdb..sysjobs where [name] ='Database Mirroring Monitor Job')
开始
     EXEC sp_dbmmonitordropmonitoring
结束
走

 - 设置镜像监视
 EXEC sys.sp_dbmmonitoraddmonitoring  - 默认为1分钟
走


 / * ------------------------------------------------ ----- * /
 - 以委托人身份运行
 / * ------------------------------------------------ ----- * /
 :连接$(PRINCIPAL)
走

 - build立镜像伙伴关系
 ALTER DATABASE [$(DATABASE_NAME)] SET PARTNER = N'TCP:// $(MIRROR_DNS):$(PORT)'
走

 - 删除镜像监控
如果存在(select * from msdb..sysjobs where [name] ='Database Mirroring Monitor Job')
开始
     EXEC sp_dbmmonitordropmonitoring
结束
走

 - 设置镜像监视
 EXEC sys.sp_dbmmonitoraddmonitoring  - 默认为1分钟 
走






 / * ------------------------------------------------ ------ * /
 -  DRMirroringRemove.sql
 / * ------------------------------------------------ ------ * /
如果存在(select * from sys.database_mirroring where db_name(database_id)='$(DATABASE)'且mirroring_guid不为空)
开始
     ALTER DATABASE [$(DATABASE)]设置伙伴closures
结束
走

等候延迟'00:00:10'
走







 / * ------------------------------------------------ ------ * /
 -  DRMirroringRemoveMirror.sql
 / * ------------------------------------------------ ------ * /
如果存在(select * from sys.database_mirroring where db_name(database_id)='$(DATABASE)'且mirroring_guid不为空)
开始
     ALTER DATABASE [$(DATABASE)]设置伙伴closures
结束
走

等候延迟'00:00:10'
走

 DROP DATABASE [$(DATABASE)]
走

内置的数据库镜像监视器如何?