我们使用SQLServer中的内置logshipping来login我们的灾难恢复站点,但是在一个月内进行DRtesting,这需要我们在Live和BAckup服务器之间来回移动。 我们在系统上运行多个(30)数据库,因此手动备份最终日志并禁用这些作业的工作量太大,需要很长时间。 我虽然没有问题,但我会脚本它,但总是complaninig遇到麻烦,即使我不输出最后的日志,直到数据库进入norecovery模式,最后的login是太早应用。 首先,有没有一个简单可靠的方法呢? 我在一些第三方软件(redgate sqlbackup我认为是这样),但这并不容易在这种情况下。 我想要做的是基本上运行一个脚本(一系列存储过程)让我去DR和运行另一个让我没有dataloss。 我的脚本目前非常简单,但在这里他们是:
2台服务器Primary Paris Secondary ParisT
StartAgentJobAndWait是由其他人(ta)编写的脚本,只是检查作业已经完成或者如果它永远不会结束就退出。
目前,我只是使用名为BOB2的testing数据库,但如果我能得到它的工作将传递数据库和作业名称。
来自巴黎:
/* Disable backup job */ exec msdb..sp_update_job @job_name = 'LSBackup_BOB2', @enabled = 0 exec PARIST.msdb..sp_update_job @job_name = 'LSCopy_PARIS_BOB2', @enabled = 0 exec PARIST.msdb..sp_update_job @job_name = 'LSRestore_PARIS_BOB2', @enabled = 0 exec PARIST.master.dbo.DRStage2 ParisT DRStage2 DECLARE @RetValue varchar (10) EXEC @RetValue = StartAgentJobAndWait LSCopy_PARIS_BOB2 , 2 SELECT ReturnValue=@RetValue if @RetValue = 1 begin print 'The Copy Task completed Succesffuly' END ELSE print 'The Copy task failed, This may or may not be a problem, check restore state of database' SELECT @RetValue = 0 EXEC @RetValue = StartAgentJobAndWait LSRestore_PARIS_BOB2 , 2 SELECT ReturnValue=@RetValue if @RetValue = 1 begin print 'The Restore Task completed Succesffuly' END ELSE print 'The Copy task failed, This may or may not be a problem, check restore state of database' exec PARIS.master.dbo.DRStage3 /* Do the last logship and move it to Trumpington */ BACKUP log "BOB2" to disk='c:\drlogshipping\BOB2.bak' with compression, norecovery EXEC xp_cmdshell 'copy c:\drlogshipping \\192.168.7.11\drlogshipping' EXEC PARIST.master.dbo.DRTransferFinish AS BEGIN restore database "BOB2" from disk='c:\drlogshipping\bob2.bak' with recovery
这有时会工作吗? 我不得不为灾难恢复testing做同样的事情,但是还没有碰到这个问题。 你在做什么应该在技术上工作。
您是否在启动LSCopy作业之前检查了LSBackup作业是否正在该数据库上运行? 这听起来像是你刚刚错过了你的norecovery备份之前的最新备份。 LSCopy工作可能只是没有得到一切。
在运行norecovery备份之后,尝试再次运行LSCopy,届时调度程序将完成所有备份,并且应该没问题。 此外,如果您将LSCopy作业设置为将输出保存到文件中,那么如果存在无法复制的日志备份,则相信您会看到一个错误(就像正在使用备份,因为当前备份正在写入)。
为了给你一个关于创build自动生成脚本进行还原的想法,下面是我写的一个自动生成特定数据库的还原脚本的过程。
http://tenbulls.co.uk/2011/02/08/t-sql-tuesday-015-%E2%80%93-spend-time-now-to-save-time-later/
请注意,即使不是所有你想做的事情都可以通过Powershell,SMO和T-SQL的混合来完成。 这只取决于时间是否花费在全部或部分解决scheme上。 就我个人而言,我会select偏好,所以当执行这样的任务时,您总是会想要一个手动元素。
问候,马克。