ࡱ>  mbjbj 4e 33333Y&%%%%%%%$'*%%&L"L"L"V%L"%L"L"t$$sgt53 ^$%)&0Y&$u+F!u+$$u+X%lL"%%L"Y&u+ : Disaster Recovery for Microsoft SQL Server Databases  PART 1 - Automatic Restoration of backup files to a failover server The disaster recovery method used is to have a hot' standby server (SQL2), which is already installed, stable and, most importantly, is an exact copy of the production server's configuration. The standby server should already have the most recent operational databases fully-restored in norecovery mode. Implementing a Hot Standby Server After SQL Server has been installed on the failover server, you need to check that Robocopy is installed in the sysroot\windows\system32 folder. Secondly, Red Gate's SQL Backup software must connect to the server and be configured by clicking the small grey square next to server listing in left pane this is for instance auto-configuration, if it has not been done already.  Figure 1 - SQL Backup's auto-configuration system. Next, for the stored procedures that execute Robocopy (we place these procedures in a local database on each server called DBA_tools), you need to allow the advanced option xp_cmdshell to run: --Toallowadvancedoptionstobechanged. EXECsp_configure'showadvancedoptions',1 GO --Toupdatethecurrentlyconfiguredvalueforadvancedoptions. RECONFIGURE GO --Toenablethefeature. EXECsp_configure'xp_cmdshell',1 GO --Toupdatethecurrentlyconfiguredvalueforthisfeature. RECONFIGURE GO In order to copy the backup files, each database on the standby server needs a database-specific SQL Server Agent job running Robocopy at the required interval to copy full and differential backups from the production server to the standby server. These jobs can be run at whatever frequency needed, be it daily, hourly or even more often if your operations require it. Robocopy is the first step in all automated restore jobs, unless you want to add validation steps prior to the backup file copy. The following example copies all differential database backups from a production server to a DRP server: EXECdbo.usp_RoboCopy'\\PRODserver\drive$\ProdServerBackupShare\Diff','\\DRPserver\Drive$\ProdServerDbBackupFolder\Diff','database1_*database2_*' --Thiscasejusthandlesthedifferentialfolder A database-specific SQL Server Job will restore these backups daily to the hot standby server (DRP) using stored procedures specifically created for this setup, such as: usp_DB_Restore_Master or usp_DB_Restore_Master_Multi usp_DB_Restore usp_DB_Restore_NoRecovery usp_DB_Restore_differential usp_DB_Restore_Log Full Recovery mode is recommended for critical databases that require auditing compliance. In the event of failure, the most recent log or differential backup is ready to be applied to the standby database sitting in norecovery mode, and youre up and running quickly with minimal down-time. An alternative method for a much smaller database, where the total restore time is below five minutes, is to apply the complete restore every hour to the failover server, in which case you dont need to worry about norecovery mode. PART 2 - Instructions to follow in the event of a disaster to the production system If you havent heard from them directly already, please contact FIRST LINE DBA SUPPORT at [INSERT NUMBER] or SECONDARY DBA at [INSERT NUMBER] After the production/original data publisher server failure (SQL1), the restore / backup-subscriber server (SQL2) will be used as the primary database server (a.k.a. DRP server). Inform everyone in the department by E-mail. Once the switch occurs to the DRP server and the downtime of SQL1 actually happens, all application connection strings need to be changed to access SQL2. The CGI should handle this step automatically. Disable Automatic Restore SQL Agents on SQL2. Disable all SQL Agent jobs on failed server SQL1 if possible. Enable all maintenance and backup jobs on newly active server SQL2 Please note that restoring a log backup is not possible if the production database recovery model is set to Simple. For fine-grained restoration, the database needs to have been using the Full recovery model. If point in time recoveries are requested by management on a regular basis, then we can also change the database recovery level to Bulk-Logged, if space is an issue, and Full otherwise. A log of what has been restored shall be placed in the following directory: \\DatabaseServerName\drive$\prodBackupDir\DBlog\ As soon as a restore is completed, we should have an automatic purge of old backups done perhaps every week, and which can be automated using a batch file or PowerShell Script. To ensure a smooth restore process, we should read the restore parameters directly from the backup log system tables - such as BackupHistory, BackupSet, BackupFile or Backuplog - unless a backuplog table is explicitly created in a local database or exists in msdb. This is to ensure that the essential restore parameters (such as the backup file name and position) are immediately available. SQL1 & SQL2 (Prod. & DRP) Server Hardware Configuration SQL1 (production instance) 1.1Server TypeWindows 2008 (standard x64 edition)1.2System Model7.21.3RAM Memory8 Gig1.4No. of CPUs21.5CPU & SpeedAMD (x64)DrivesHard Disk SpaceC(#G);D(#G)SQL2 (storage replication partner / hot standby restore-subscriber) 1.1Server TypeWindows 2008 ( standard x64 edition )1.2System Model[Insert Server Model Number, Product Type]1.3RAM Memory9 Gig1.4No. of CPUs21.5CPU & SpeedAMD (x64) Opteron Processor 280DrivesHard Disk SpaceC(#G); D(#G); F(2TB); G(250GB); H (1.5TB); Z(20GB)SQL Server Configuration Our servers are using 64-bit versions of the SQL Database Engine 2005/8, with at least service pack 2 (2005), cu3 (2008) installed, and the collation type is Latin1_General_CI_AS (accent sensitive is recommended). It is preferable to have at least Cumulative Rollup package 8 or SP3 for SQL Server 2005, and its important to do an update to production build levels of SQL on a regular basis. Detailed information for the server and databases is included in the compiled help file located on both servers SQL1 and SQL2 D:\DRP\ServerName.chm Critical SQL Server User Database Details 1. List of databases Database1 Database2 NB: We will not be doing master, msdb, model or temp these are backed up on a regular basis and will be copied by robocopy although not restored onto the database restore replication subscriber directly. 2. Database Maintenance Plan and Auto-Restore. In general, our database restore plan will reflect exactly the backup schedule and wait for backups to finish by querying the metadata from the production server. The restore jobs will check to see if the days full backup has completed (or daily diff.) using the backupset.backup_finish_date column. Once we see that Full backup has been completed on the production server, we copy the backupfile over to the hot standby server. In the second step of the job, we continue to execute the code from the appropriate usp_DB_restore combined with the metadata extraction from the system tables. 3. Database Backup schedule in production Maintenance Job Name Maintenance Job Description Freq Time to Run BackupFull_Database1Full Database backup Database1WSunday 6:00BackupFull_Database2Full Database backup Database2WSunday 6:304. Restore jobs on DRP server Maintenance Job NameMaintenance Job Description Freq Time to Run BackupFull_Database1Full Database backup Database1WSunday 6:00BackupFull_Database2Full Database backup Database2WSunday 6:30Critical Scripts, Procedures and Programs related to disaster recovery Following is a list of all the code used for the DRP process from SQL1 to SQL2: usp_DB_Restore_Master CREATE PROC usp_DB_Restore_MasterRecovery --Addthedatabasenameandinputvariables,insteadofsettingthemon lines 40-23. AS DECLARE @filename VARCHAR(255) ,@cmd VARCHAR(500) ,@cmd2 VARCHAR(500) ,@dbNameSource SYSNAME --Thisisaninputparameter,unlessyouare testing. ,@dbNameTarget SYSNAME --Thisisaninputparameter,unlessyouare testing. ,@FullRestoreFolder NVARCHAR(MAX)--Thisisaninputparameter,unlessyou -- are testing. ,@dbNameStatement NVARCHAR(MAX) ,@dbNameStatementDiff NVARCHAR(MAX) ,@LogicalName VARCHAR(255) ,@PhysicalName VARCHAR(255) ,@Type VARCHAR(20)--Useful if reading the backup headers ,@FileGroupName VARCHAR(255) ,@Size VARCHAR(20) ,@MaxSize VARCHAR(20) ,@filelistStatmt1 VARCHAR(MAX) ,@filelistStatmtDiff VARCHAR(MAX) /* The followingvariables aresetupfortestingandmaybetakenoffwhenspis used afterwards (ifwecannotgetthemreliablyfromsysdatabasesautomatically). */ ,@backupFile SYSNAME --willgrabfromlocaltest.sqbfilesfirst. ,@logicalDataFile SYSNAME /* Iamdevelopingthiscodefirstassumingthatwe will only have one data file and logical file for each database. Later we'll add support for multiple logical and physical files(theremaybe,in Database1's case, more than one row for dbo.sysfiles wherefileid=1andgroupid=1). */ ,@logicalDataStmt1 NVARCHAR(MAX) ,@logicalDataStmt2 NVARCHAR(MAX) ,@logicalDataStmt3 NVARCHAR(MAX) ,@logicalLogFile SYSNAME --Returnedandverified. ,@logicalLogStmt1 NVARCHAR(MAX) ,@logicalLogStmt2 NVARCHAR(MAX) ,@logicalLogStmt3 NVARCHAR(MAX) ,@physicalDataFile SYSNAME --Easytograbsinceitwasinmaster. ,@physicalLogFile SYSNAME --Needtwovariables. ,@physicalLogFileStmt1 NVARCHAR(MAX) ,@physicalLogFileStmt2 NVARCHAR(MAX) ,@physicalLogFileStmt3 NVARCHAR(MAX) SET NOCOUNT ON --Followingbestpractices,althoughwe'renotthrowingaround big -- countsanyway. -- Parametersandvariablessetfortesting. SET @FullRestoreFolder='\\testServer\Drive$\ProdServerBackupFolder\full\' SET @dbNameSource ='Database1' SET @dbNameTarget ='Database1' --Sometimeswewanttoover-write another database -- (e.g.inthecaseofimportpdm_tst). SET @physicalDatafile=( SELECT filename FROM MASTER.dbo.sysdatabases WHERE NAME=@dbnameTarget) PRINT 'ThephysicaldataFILETORESTOREIS'+@physicalDatafile SET @logicalDataStmt1='selecttop1namefrom[' SET @logicalDataStmt2='].dbo.sysfileswherefileid=1andgroupid=1' SET @logicalDataStmt3 = (@logicalDataStmt1+@dbNameTarget+@logicalDDataStmt2) CREATE TABLE #logicalDataFile --Droptable#logicaldatafile. ( logicalDataFile SYSNAME ) INSERT INTO [#logicalDataFile] usp_DB_Backup & usp_DB_Restore --============================================= --Description:RestoreDatabase --Parameter1:RestoreFileName --Parameter2:Fullpathoffilelocationi.e.'DriveName:\BackupShare\' --Parameter3:RestoreType --FDN=fullordifferentialnorecovery,FDR=fullordifferentialwithrecovery, --LN=lognorecovery,LR=logwithrecovery --FileExtensions:Full=*.bak,Differential=*.dif,T- Log= *.trn , *.sqb -- (SQLBackup) --============================================= CREATE PROCEDURE [dbo].[usp_DB_restore] @RestoreFileName SYSNAME, @LogicalNameData SYSNAME, @LogicalNameLog SYSNAME, @RestorePathData SYSNAME, @RestorePathLog SYSNAME, @ResoreType CHAR(1) AS BEGIN SET NOCOUNT ON ; DECLARE @SqlCmd NVARCHAR(2000) DECLARE @DateTime SYSNAME DECLARE @BakupFile NVARCHAR(1400), @DiffFile NVARCHAR(1400), @LogFile NVARCHAR(1400) IF @ResoreType = 'FDN' SET @SqlCmd = 'RESTOREDATABASE' + QUOTENAME(@DBName) + 'TODISK=' + @Bakupfile + 'WITHINIT' IF @ResoreType = 'FDR' SET @SqlCmd = 'RESTOREDATABASE' + QUOTENAME(@DBName) + 'TODISK=' + @Bakupfile + 'WITHINIT' IF @ResoreType = 'LN' SET @SqlCmd = 'RESTORELOG' + QUOTENAME(@DBName) + 'TODISK=' + @LogFile + IF @ResoreType = 'LR' SET @SqlCmd = 'RESTORELOG' + QUOTENAME(@DBName) + 'TODISK=' + @LogFile + PRINT @SqlCmd EXECUTE sp_executesql @SqlCmd END usp_DB_Restore_NoRecovery CREATE PROC [dbo].[usp_DB_Restore_NoRecovery] --inputvariableswhenitallworksbelow@backupfileSYSNAME, @dbName SYSNAME, @logicalDataFile SYSNAME, @logicalLogFile SYSNAME, @physicalDatafile SYSNAME, @physicalLogFile SYSNAME AS DECLARE @exitcode INT DECLARE @sqlerrorcode INT DECLARE @restoreStmt NVARCHAR(MAX) SET NOCOUNT ON EXEC usp_KillConnections @dbName SET @restoreStmt = N'-SQLRESTOREDATABASE' + @dbName + ' FROMDISK=' + @backupfile + ' WITHNORECOVERY ,MOVE' + @logicalDataFile + 'TO' + @physicalDatafile + ' ,MOVE' + @logicalLogFile + 'TO' + @physicalLogFile + ' ,REPLACE ,LOGTO="\\ServerName\Drive$\SourceServerName\DBlog__ .txt"' --PRINT@restoreStmt EXEC MASTER..sqlbackup @restoreStmt, @exitcode OUT, @sqlerrorcode OUT IF ( @exitcode >= 500 ) OR ( @sqlerrorcode <> 0 ) BEGIN RAISERROR ( 'SQLRestorefailedwithexitcode:%dSQLerrorcode:%d', 16, 1, @exitcode, @sqlerrorcode ) END usp_DB_Restore_Differential --restoredirectlyfromourcopywhichisautomaticallybroughtlocalusingrobocopy --EXEC[usp_DB_restore_Differential] -- '\\TestServer\Drive$\ProductionServer\Diff\ -- DIFF_ServerName_DB_20080301_210001.sqb', -- 'DBname','LogicalDataFileName','LogicalLogFileName', -- 'Drive:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\Database1.mdf', -- 'Drive:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\ -- Database1_log.ldf' --dropproc[usp_DB_restore_Differential] CREATE PROC [dbo].[usp_DB_Restore_Differential] --Inputvariableswhenitallworksbelow. @backupfile SYSNAME, @dbName SYSNAME, @logicalDataFile SYSNAME, @logicalLogFile SYSNAME, @physicalDatafile SYSNAME, @physicalLogFile SYSNAME AS DECLARE @exitcode INT DECLARE @sqlerrorcode INT DECLARE @restoreStmt NVARCHAR(MAX) SET NOCOUNT ON EXEC usp_KillConnections @dbName --WITHRECOVERYisusedafterafull restoreisdonealready, and a final -- differential is applied toit(restoredifferentialshouldbeona db in -- NORECOVERY MODE). SET @restoreStmt = N'-SQLRESTOREDATABASE' + @dbName + ' FROMDISK=' + @backupfile + ' WITHNORECOVERY ,MOVE' + @logicalDataFile + 'TO' + @physicalDatafile + ' ,MOVE' + @logicalLogFile + 'TO' + @physicalLogFile + ' ,REPLACE ,LOGTO="\\DRPServerName\Drive$\ProdServerBackupFolder\DBlog\__ .txt"' -- PRINT@restoreStmt EXEC MASTER..sqlbackup @restoreStmt, @exitcode OUT, @sqlerrorcode OUT IF ( @exitcode >= 500 ) OR ( @sqlerrorcode <> 0 ) BEGIN RAISERROR ( 'SQLRestorefailedwithexitcode:%dSQLerrorcode:%d', 16, 1, @exitcode, @sqlerrorcode ) END usp_DB_Restore_Log SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /*EXEC[usp_DB_restore_log]'\\ProdServer\Drive$\ProdServerDBbackups\Full\ FULL_ServerName_DatabaseName1_20080217_030000.sqb', 'LogicalFileName', 'LogicalDataFile', 'LogicalLogFileName', 'Drive:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\Database1.mdf', 'Drive:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\Database1_log.ldf' dropproc[usp_DB_restore_log] */ CREATE PROC [dbo].[usp_DB_restore_log] --Inputvariableswhenitallworksbelow. @backupfile SYSNAME, @dbName SYSNAME, @logicalDataFile SYSNAME, @logicalLogFile SYSNAME, @physicalDatafile SYSNAME, @physicalLogFile SYSNAME /* Systemtablebackupfileonproduction server can give us LSN (log sequence number), logical_name, physical_drive and physical_name. If not, to grab the possible backup sets that are usable, see ms-help://MS.SQLCC.v9/ MS.SQLSVR.v9.en/tsqlref9/html/f1a7fc0a-f4b4-47eb-9138-eebf930dc9ac.htm. */ AS DECLARE @exitcode INT DECLARE @sqlerrorcode INT DECLARE @restoreStmt NVARCHAR(MAX) SET NOCOUNT ON --Wewillnotneedtokillconnections,sincethedatabaseisinrestoringstate -- already,waitingforalog. -- EXECusp_KillConnections@dbName --Transactionlogsmustbeappliedinsequentialorder. Iftherearemultiple -- transaction logstoapplywehavetoleave theNORECOVERYoption on. -- Restoreloginfoms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/tsqlref9/html/ 877ecd57-3f2e-4237-890a-08f16e944ef1.htm. SET @restoreStmt = N'-SQLRESTORELog' + @dbName + ' FROMDISK=' + @backupfile + ' WITHRECOVERY ,MOVE' + @logicalDataFile + 'TO' + @physicalDatafile + ' ,MOVE' + @logicalLogFile + 'TO' + @physicalLogFile + ' ,REPLACE ,LOGTO="\\TestServer\d$\TtestDB\DBLog\__ .txt"' --PRINT@restoreStmt EXEC MASTER..sqlbackup @restoreStmt, @exitcode OUT, @sqlerrorcode OUT IF ( @exitcode >= 500 ) OR ( @sqlerrorcode <> 0 ) BEGIN RAISERROR ( 'SQLRestorefailedwithexitcode:%dSQLerrrorcode:%d', 16, 1, @exitcode, @sqlerrorcode ) END usp_RoboCopy CREATE PROCEDURE [dbo].[usp_RoboCopy] ( @srcUNC SYSNAME, --SourceServerName. @dstUNC SYSNAME, --DestinationServerName. @filelist VARCHAR(1024) --Spacedelimitedlistoffilestobecopied. ) AS /*****************************************************************/ --StoredProcedure :usp_RoboCopy --CreationDate :2009-02-26 --Writtenby :StephenMandeville,adaptedbyHugoShebbeare /*************************************************************************/ SET NOCOUNT ON DECLARE @ccmd VARCHAR(1500) DECLARE @logfile VARCHAR(25) DECLARE @retcode INT /**************************************************************************/ --ThisstoredprocedureusesROBOCOPY.exe,whichisinstalledonserveritself --in the sysroot\windows\system32folder(defaulton2008). -- TheSourceandDestination shares mustexist. /***************************************************************************/ SELECT @logfile = REPLACE(SUBSTRING(( CONVERT(VARCHAR(15), GETDATE(), 121) ), 1, 10), '-', '') + REPLACE(SUBSTRING(( CONVERT(VARCHAR(30), GETDATE(), 121) ), 12, 8), ':', '') SELECT @ccmd = 'ROBOCOPY' + @srcUNC + '' + @dstUNC + '' + @filelist + '/NP/LOG:' + @dstUNC + '\transfer' + '_' + @logfile + '.txt' --PRINT@ccmd EXECUTE @retcode = MASTER..xp_cmdshell @ccmd /***************************************************************************/ --Thereturncode(@retcode) fromRobocopy(version1.74andlater)isa --bitmap,definedasfollows: -- Value MeaningIfSet --16 Seriouserror.Robocopydidnotcopyanyfiles.Thisiseither a -- usage error or an errorduetoinsufficientaccessprivilegeson -- the sourceor destination directories. --8 Somefilesordirectoriescouldnotbecopied(copyerrorsoccurredand -- theretrylimitwasexceeded)Checktheseerrorsfurther. --4 SomeMismatchedfilesordirectoriesweredetected.Examinetheoutput -- log.Housekeepingisprobablynecessary. --2 SomeExtrafilesordirectoriesweredetected.Examinetheoutputlog. -- Somehousekeepingmaybeneeded. --1 Oneormorefileswerecopiedsuccessfully.thatis,newfileshave -- arrived). --0 Noerrorsoccurred,andnocopyingwasdone.Thesourceanddestination -- directorytreesarecompletelysynchronized. /**************************************************************************/ --Raisingerroronlyupon@retcode>7. IF @retcode > 7 BEGIN RAISERROR ( 'ErroroccurredwhileexecutingRobocopy', 16, 1 ) RETURN&##160;( @retcode ) END --IF@retcode>7 ELSE BEGIN RETURN ( @retcode ) END --ELSE usp_KillConnections IF NOT EXISTS ( SELECT * FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'[dbo].[usp_KillConnections]') AND TYPE IN (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' /***************************************************************** ***Procedure:usp_KillConnections ***Usage:usp_KillConnections@dbname=''DatabaseName'' ***Description:Dropallconnectionsfromaspecificdatabase ***Input:@dbname-REQUIRED-Nameofthedatabase ***Output:Outputstheresultsoftheproccess ***Revision:1.0 ***RevisionHistory:1.0FirstRelease ***Author:AntonioPedrosaLinares ***Date:7/25/2007 ******************************************************************/ --execusp_KillConnections''staplescpc'' createprocedure[dbo].[usp_KillConnections] @dbnamevarchar(128) as declare@spidvarchar(5) declare@loginnamenvarchar(128) declare@intErrorCodeint declare@intOkint declare@intErrorint declare@intTotalint set@intErrorCode=0 set@intOk=0 set@intError=0 set@intTotal=0 select@intTotal=count(sp.spid)FROMmaster..sysprocessessp JOINmaster..sysdatabasessdONsp.dbid=sd.dbid WHEREsd.name=@dbname declareKILL_CONScursorfor SELECTcast(sp.spidasvarchar(5)),rtrim(sp.loginame) FROMmaster..sysprocessessp JOINmaster..sysdatabasessdONsp.dbid=sd.dbid WHEREsd.name=@dbname OPENKILL_CONS FETCHNEXTFROMKILL_CONSINTO@spid,@loginname WHILE@@FETCH_STATUS=0 BEGIN EXEC(''Kill''+@spid+'''') SELECT@intErrorCode=@@ERROR if@intErrorCode=0 begin set@intOk=@intOk+1 PRINT''Process''+@spid+''fromlogin'' +@loginname+''hasbeenended.'' end else begin set@intError=@intError+1 PRINT''Process''+@spid+''fromlogin'' +@loginname+''couldnot beended.'' end FETCHNEXTFROMKILL_CONSINTO@spid,@loginname END CLOSEKILL_CONS DEALLOCATEKILL_CONS PRINT''Totalnumberofprocessesfromdatabase'' +@dbname+'':''+cast (@intTotalasvarchar) PRINT''Processesendednormally:''+cast(@intOkasvarchar) PRINT''Processescouldnotbeended:''+cast(@intErrorasvarchar)' END System Database Backups On the DRP server itself the backups of the MSDB, DBAs databases, which are critical to this whole DRP process are located here: \\DRPServerName:\DRPbackupFolder\Full All DBAs and system databases are backed up as well as on: \\TstServerName:\TestSrvBackupFolder\Full The following example was tested on a primary test server and exists on the restore server. The usp_DB_restoreX stored procedure takes 6 input parameters. To match up with backup log metadata, we shall match up the database name by date and then pull the relevant restore file input parameter into the appropriate usp_DB_restoreX stored procedure. The master restore procedures, divided into single file and multiple file restore procedures, use all the sub procedures to do the actual restore process. Please note that the usp_DB_RestoreX stored procedures are dependent on usp_KillConnections which will help in the restoration process by killing the existing database users (that is, unless its a system user however). e.g. EXECDBA_Tools.dbo.usp_DB_restore'\\TestServerName\Drive$\ProductionBackupFolder\Full\FULL_ServerName_Database1_20080217_030000.sqb','DBlogicalName','DB_DataFile_Logicalname','DB_LogFileLogical_name','DriveName:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\DBphysicalDataFileName.mdf','DriveName:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\DBphysicalLogFileName_log.ldf' The stored procedure usp_DB_restore_norecovery is the same as usp_DB_restore, only for Databases that need to be left in norecovery mode. Please view the Activity History from Red Gate SQL Backup for reporting on what databases have been backed up, as the scope of this document covers the restoring process only. Although the backup information is extracted to prepare the automated restore scripts within the jobs, we are not going to create (at least at this stage) customised backup reporting information. However, do not forget that, since we are using these scripts within a SQL Server Agent job, we will have histories for each step and a log file written to the \DBlog\ folder local to the disaster recovery server running these SQL Agent Jobs.  Figure 2 - SQL Backup Activity Log Database Restore method when applying Differential Backups. Please note that we use usp_restore_db_norecovery to load a production backup from the local copy moved over using Robocopy. Thus, if executed on the DBA database of the DRP server (SERVER NAME / INSTANCE NAME): EXECDBA_Tools.dbo.usp_DB_restore_norecovery'\\DRPserver\InstanceName\full\FULL_ServerName_Database_20080217_030000.sqb','db2','db2_data','db2_log','D:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\db2.mdf','D:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\db2_log.ldf' This will be the core of what runs for the second step of an automated job which leaves the database in NoRecovery mode, and thus should call the respective RestoreDiff_dbx next and, finally, apply the log files via RestoreLog_dbx. After the restore, make sure to run several tests that ensure the integrity of the data and that typical applications can run normal operations on the database.  4567| ⪑ubLbLb6b*h?phL%5PJ\aJmH nH sH tH *h?phL%6PJ]aJmH nH sH tH $h?phL%PJaJmH nH sH tH 6h?phL%5CJ OJPJQJ\aJ$mH nH sH tH 0hL%hL%CJOJPJQJaJmH nH sH tH 9jhDhThDhTCJOJPJQJUaJmH nH sH tH 4hM45CJ(KH$OJPJQJ\aJ0mH nH sH tH :h?phL%5CJ(KH$OJPJQJ\aJ0mH nH sH tH  57| H J } > T=Bgdzddd@&[$\$gdL%ddd[$\$gdL%ddd@&[$\$gdL% dgdL%ddd@&[$\$gdL% ? W j  H I J | } > j ѻѥцmU@ѥ2hz0JB* CJaJph(hzhL%CJPJaJmH nH sH tH .hzhL%6CJPJ]aJmH nH sH tH 0hL%hL%CJOJPJQJaJmH nH sH tH <jhWAhWACJOJPJQJUaJmHnHsH tH u*h?phL%5PJ\aJmH nH sH tH *h?phL%6PJ]aJmH nH sH tH $h?phL%PJaJmH nH sH tH 6hzhL%5CJOJPJQJ\aJmH nH sH tH j k p }   + - / 0 3 4 r s  õuõukXߧ$h?phL%PJaJmH nH sH tH hD/hz0J5#hzB*CJOJQJ^JaJphhz0JB* CJaJph#hzB*CJOJQJ^JaJphhz0JB*CJaJphhz0JB*CJaJphhz0JB*CJaJphhz0JB* CJaJphhz0JB*CJaJph#hzB* CJOJQJ^JaJph"%'Y[wxTBüdNN*h?phL%5PJ\aJmH nH sH tH 6h?phL%5CJ OJPJQJ\aJ$mH nH sH tH $h6PJ]aJmH nH sH tH *h?phL%6PJ]aJmH nH sH tH $h?phL%PJaJmH nH sH tH  hD/hzhz0JB* CJaJph#hzB*CJOJQJ^JaJphhz0JB*CJaJphhz0JB*CJaJphBy(0kddd$If[$\$gdL%ddd@&[$\$gdL%ddd@&[$\$gdL%ddd[$\$gdL% & Fddd[$\$gdL%/k 23MNqrݴݘ~kdkNkdkdkdkdkd~kdk*hWAhL%6PJ]aJmH nH sH tH  hWAhL%$hWAhL%PJaJmH nH sH tH 2h?phL%5OJPJQJ\aJmH nH sH tH 6h?phL%5CJOJPJQJ\aJmH nH sH tH h?pPJaJmH nH sH tH 0h?phL%56PJ\]aJmH nH sH tH $h?phL%PJaJmH nH sH tH hWAPJaJmH nH sH tH hUUUddd$If[$\$gdL%kd)$$IfF"7 f!F)FF  t0u!6    34Bab ytL%  hUUUddd$If[$\$gdL%kdR*$$IfF"7 f!F)FF  t0u!6    34Bab ytL%#02hUUUddd$If[$\$gdL%kd+$$IfF"7 f!F)FF  t0u!6    34Bab ytL%237CMhUUUddd$If[$\$gdL%kd+$$IfF"7 f!F)FF  t0u!6    34Bab ytL%MNUeqhUUUddd$If[$\$gdL%kd,$$IfF"7 f!F)FF  t0u!6    34Bab ytL%qrhXEEEddd$If[$\$gdL%ddd@&[$\$gdL%kd~-$$IfF"7 f!F)FF  t0u!6    34Bab ytL%*hUUUddd$If[$\$gdL%kdI.$$IfF W!FFF  t0f!6    34Bab ytL%)*+@ATU 5 J S T ] ^ _ ` .!/!_!##дq[qq*h?phL%6PJ]aJmH nH sH tH 2h?phL%5OJPJQJ\aJmH nH sH tH *h?phL%5PJ\aJmH nH sH tH $h?phL%PJaJmH nH sH tH 6h?phL%5CJOJPJQJ\aJmH nH sH tH  hWAhL%$hWAhL%PJaJmH nH sH tH *hWAhgd6PJ]aJmH nH sH tH *+/:@hUUUddd$If[$\$gdL%kd/$$IfF W!FFF  t0f!6    34Bab ytL%@AERThUUUddd$If[$\$gdL%kd/$$IfF W!FFF  t0f!6    34Bab ytL%TUYehUUUddd$If[$\$gdL%kd0$$IfF W!FFF  t0f!6    34Bab ytL%hUUBddd$If[$\$gd%ddd$If[$\$gdL%kdu1$$IfF W!FFF  t0f!6    34Bab ytL%u 5 hXIIIXddd[$\$gdL%ddd@&[$\$gdL%kd@2$$IfF W!FFF  t0f!6    34Bab ytL%5 J T ^ ` /!_!###$$!$ddd$If[$\$gdL%ddd[$\$gdL%ddd[$\$^gd?pddd@&[$\$gdL% ### $$$$ $!$"$d$e$$$$$$$$%%%%%%%W%X%%%%%%;&Q&жКk6hL%hL%5CJOJPJQJ\aJmH nH sH tH $h?phL%PJaJmH nH sH tH 6h?phL%5CJOJPJQJ\aJmH nH sH tH 2h?phL%5OJPJQJ\aJmH nH sH tH  hWAhL%$hWAhL%PJaJmH nH sH tH *hWAhL%5PJ\aJmH nH sH tH "!$"$7$V$X$d$S@@@@ddd$If[$\$gdL%kd 3$$If\ f!F F FF t0u!634BabytL%d$e$z$$$$S@@@@ddd$If[$\$gdL%kd3$$If\ f!F F FF t0u!634BabytL%$$$$$$S@@@@ddd$If[$\$gdL%kd4$$If\ f!F F FF t0u!634BabytL%$$$$%%SC000ddd$If[$\$gdL%ddd@&[$\$gdL%kd5$$If\ f!F F FF t0u!634BabytL%%%%*%I%K%W%@kd6$$If\ W!F F FFr t0f!634BabytL%ddd$If[$\$gdL%W%X%m%%%%S@@@@ddd$If[$\$gdL%kd7$$If\ W!F F FFr t0f!634BabytL%%%%%%%S@@@@ddd$If[$\$gdL%kdi8$$If\ W!F F FFr t0f!634BabytL%%%%;&Q&SC4$ddd@&[$\$gdL%ddd[$\$gdL%ddd@&[$\$gdL%kdP9$$If\ W!F F FFr t0f!634BabytL%Q&R&X&Y&]&^&|&}&&&&&&&&&&&&&''''''''' '-'˽}oaaOaoaaOa#hzB*CJOJQJ^JaJphhz0JB*CJaJphhz0JB*CJaJphCCC#hzB*CJOJQJ^JaJph#hzB* CJOJQJ^JaJphhz0JB* CJaJphhO0JB*CJaJphhz0JB*CJaJphh6[F0JB*CJaJphhz0JB*CJaJph/h?pB*CJOJQJaJmHnHphsH tH -'2'3':';'>'?'@'M'Z'['b'c'''''''''''((((((!("(L(M(`(a(m(n(~(((((((((((ǹǧ㙇㙇yǙyǧhz0JB*CJaJph#hzB* CJOJQJ^JaJphhz0JB* CJaJph#hzB*CJOJQJ^JaJphhz0JB*CJaJphhz0JB*CJaJphhz0JB*CJaJphh6[F0JB*CJaJphhz0JB*CJaJphCCC/(((((((((((((((()) ) ) ))))&)')))*)J)Q)R)^)_)m)n)u)v)y)z){)))))))))))õõõ}}õõhz0JB* CJaJphhO0JB* CJaJphhz0JB*CJaJphhz0JB*CJaJphh6[F0JB*CJaJphhz0JB*CJaJphCCC#hzB*CJOJQJ^JaJphhz0JB*CJaJphhz0JB*CJaJph1)))))))))))))))))*******!*********++&+'+7+8+?+չ՝Տ}՝Տ}իk՝k՝#hzB* CJOJQJ^JaJph#hzB*CJOJQJ^JaJphhz0JB*CJaJphhz0JB*CJaJphCCChz0JB* CJaJphhO0JB*CJaJphhz0JB*CJaJphhz0JB*CJaJphhz0JB*CJaJphh6[F0JB*CJaJph'?+@+L+G,H,i,j,v,w,,,,,,,,,,,,,,,,,,,,,,,,, ----/-0-<-=-M-N-V-W-Z-[-ѿѿѱ߱u߱u߱uߕѿѱ߱#hzB*CJOJQJ^JaJphhz0JB*CJaJphh6[F0JB*CJaJphhz0JB*CJaJphCCChz0JB*CJaJph#hzB* CJOJQJ^JaJphhz0JB* CJaJphhz0JB*CJaJph#hzB*CJOJQJ^JaJph.[-\-]-i-j-z-{--------------------....".#.*.+.A.B.N.O.d.e.m.n.q.r.s...ͿͿuͿͿu#hzB*CJOJQJ^JaJphhz0JB*CJaJphhz0JB*CJaJphh6[F0JB*CJaJphhz0JB*CJaJphCCChz0JB*CJaJphhz0JB* CJaJph#hzB* CJOJQJ^JaJph#hOB* CJOJQJ^JaJph......................,/-/B/C/D/t/u/y/|/}/////յէյ㙇ykY#hzB*CJOJQJ^JaJphhz0JB*CJaJphhO0JB* CJaJph#hzB* CJOJQJ^JaJphhz0JB* CJaJphhz0JB*CJaJphCCC#hzB*CJOJQJ^JaJphhz0JB*CJaJphhz0JB*CJaJphhz0JB*CJaJphh6[F0JB*CJaJph"///////////////0 0=0>0i0j0n0q0r000000000000000000էuguguhz0JB*CJaJph#hzB*CJOJQJ^JaJphhz0JB*CJaJph#hzB* CJOJQJ^JaJphhz0JB* CJaJph#hzB*CJOJQJ^JaJphhz0JB*CJaJphCCCh6[F0JB*CJaJphhz0JB*CJaJphhz0JB*CJaJph(00000000000011.1/1316171H1I1c1d1h1k1l1}1~111111111111111111 2ՙ񹇹չuչuչ#hzB*CJOJQJ^JaJph#hzB*CJOJQJ^JaJphCCChz0JB*CJaJph#hzB*CJOJQJ^JaJphhz0JB*CJaJphCCChz0JB*CJaJphh6[F0JB*CJaJphhz0JB*CJaJphhz0JB*CJaJph- 2 22222'2(2G2H2L2M2N2^2m2n2u2v2z2{2|2222222չyg㙇yZhgdhzB*PJph#hzB*CJOJQJ^JaJphhz0JB*CJaJph#hzB*CJOJQJ^JaJphhz0JB*CJaJph#hzB* CJOJQJ^JaJphhz0JB* CJaJphhz0JB*CJaJphCCCh6[F0JB*CJaJphhz0JB*CJaJphhO0JB*CJaJphQ&22959Z=v=pDD5JGMUMWXXZU__`=aUaaa8bddd[$\$gdL%ddd@&[$\$gdL%gd6[Fddd@&[$\$gdL%gdz222233A3B333334484944444444444445̴xxjXj#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphh6[F0JB*CJaJphh6[F0JB*CJaJph#h6[FB* CJOJQJ^JaJphh6[F0JB* CJaJph/h6[FB* CJOJQJaJmHnHphsH tH /h?pB* CJOJQJaJmHnHphsH tH 6hL%hL%5CJOJPJQJ\aJmH nH sH tH 5555555.5/5657585<5K5L5S5T5U5Y5i5j5q5r5s5w55555555555555555555555555555555555556666գգ#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphh6[F0JB*CJaJphh6[F0JB*CJaJphCCC@666"6#6-6.66676;6=6>6F6O6P6X6Y6]6_6`6h6p6q6y6z6~6666666666666666666666ѵѣѵѣѵѣѕѕuh6[F0JB*CJaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphh6[F0JB*CJaJphCCCh6[F0JB*CJaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJph.66666667 7 777!7#7$7/70717277787@7C7D7K7L7M7N7a7d7m7n7u7v7w7777777777777777777777777ñãñãñãñãh6[F0JB*CJaJphh6[F0JB*CJaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphCCCh6[F0JB*CJaJph:7788 8 88$81848<8>8?8G8I8J8U8V8W8X8\8]8e8h8i8p8q8r8s8888888888888888888888񵕵Ճէ#h6[FB*CJOJQJ^JaJphCCC#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphh6[F0JB*CJaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphCCCh6[F0JB*CJaJphh6[F0JB*CJaJph18999999959;9<9@9A9c9d999999999999յtfTfB#h6[FB*CJOJQJ^JaJph#h6[FB* CJOJQJ^JaJphh6[F0JB* CJaJphhO0JB*CJaJphh6[F0JB*CJaJph6hL%hL%5CJOJPJQJ\aJmH nH sH tH hD/h6[FPJh6[F0JB*CJaJph#h6[FB*CJOJQJ^JaJphCCCh6[F0JB*CJaJphCCCh6[F0JB*CJaJphh6[F0JB* CJaJph99999999999 : :::::(:):0:1:?:@:G:H:Q:R:U:V:]:^:k:l:o:p:w:x::::::::::::::::::#h6[FB* CJOJQJ^JaJphh6[F0JB*CJaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphCCC#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphh6[F0JB*CJaJph5::::::::::::::;;; ;;;$;';);+;;;=;D;G;W;Z;`;c;t;w;y;{;;;;;;;;;;;;;'<(<,<@<յ㧕㧕㧕㧕h6[F0JB* CJaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphh6[F0JB*CJaJph#h6[FB*CJOJQJ^JaJphCCCh6[F0JB*CJaJphCCCh6[F0JB*CJaJphh6[F0JB*CJaJph3@<A<E<F<L<W<X<d<f<o<p<s<u<<<<<<<<<<<<<<<<<<<<<<<===/=1=3=4=6=?=A=ѵѵѵãѵёѵёqёѵh6[F0JB*CJaJph#h6[FB*CJOJQJ^JaJph#h6[FB*CJOJQJ^JaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphCCCh6[F0JB*CJaJphh6[F0JB*CJaJphh6[F0JB*CJaJph#h6[FB* CJOJQJ^JaJph,A=N=P=Q=U=X=Z=v=w====='>(>X>Y>>>>>3?4?N?O?}?~?????úxjxXxXxXxXxXxXxXxX#h6[FB* CJOJQJ^JaJphho0JB* CJaJphh6[F0JB* CJaJph/h?pB* CJOJQJaJmHnHphsH tH 6hL%hL%5CJOJPJQJ\aJmH nH sH tH hD/h6[FPJh6[F0JB*CJaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphh6[F0JB*CJaJphCCC?????????????@@ @ @ @@ @!@(@)@*@.@=@>@E@F@G@K@\@]@d@e@f@j@z@{@@@@@@@ѿѱqq#h6[FB*CJOJQJ^JaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphh6[F0JB*CJaJphh6[F0JB*CJaJphCCC#h6[FB* CJOJQJ^JaJphh6[F0JB* CJaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJph,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@AAAAAAhA㕇ugh6[F0JB* CJaJph#h6[FB*CJOJQJ^JaJphCCCh6[F0JB*CJaJphhj0JB*CJaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphh6[F0JB*CJaJphh6[F0JB*CJaJphCCC#hAiAAAAAAAAAAAABB BBBB B#B.B1B3B5BEBGBNBQBaBdBjBmB~BBBBBBBBBBBBBBBB;CG?GKGqHrH~HHHHHHHHHHHHHHHHHõãõãõãõãõãõ񵑵õõ#h6[FB*CJOJQJ^JaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphh6[F0JB*CJaJphh6[F0JB*CJaJphCCC#h6[FB* CJOJQJ^JaJphh6[F0JB* CJaJph9HHHHHHHHHHHHHHHH=I>I`IaIIIII(J)JJJJJJJJJJJJJJգՕuuuuuc#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJph#h6[FB* CJOJQJ^JaJphh6[F0JB* CJaJph#h6[FB*CJOJQJ^JaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphh6[F0JB*CJaJphh6[F0JB*CJaJphh6[F0JB*CJaJphCCC&JJJJJJJJJJJJJJKKKKKK$K(K/K2KBKEKKKNK_KbKdKfKmKpKKKKKKKKKKKKKKKKKLLLչչչչչչǕչhgd0JB*CJaJph#h6[FB*CJOJQJ^JaJphCCC#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphh6[F0JB*CJaJphCCCh6[F0JB*CJaJphh6[F0JB*CJaJphh6[F0JB*CJaJph4L,L-L1L2L8LCLDLPLRL[L\L_LaLnLoLrLsLuLxLLLLLLLLLLLLLLLLLMMMѵççõçõçõÃçõÃqcÃh6[F0JB*CJaJph#h6[FB*CJOJQJ^JaJph#h6[FB*CJOJQJ^JaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphCCCh6[F0JB*CJaJphh6[F0JB*CJaJphh6[F0JB*CJaJph#h6[FB* CJOJQJ^JaJphh6[F0JB* CJaJph&MMM M!M#M,M.M;M=M>MBMEMGMUM[M\MeMfM{M|M}MMMMMM񵬐ttftTtFtthTR0JB*CJaJphCCC#hTRB*CJOJQJ^JaJphhTR0JB*CJaJphhTR0JB*CJaJphhTR0JB*CJaJph6hL%hL%5CJOJPJQJ\aJmH nH sH tH hD/h6[FPJh6[F0JB*CJaJph#h6[FB*CJOJQJ^JaJphh6[F0JB*CJaJphCCCh6[F0JB*CJaJphh6[F0JB*CJaJphMMMMMMMMMMMMMMMNN0N1N5N6N7NCNFNNNNNNNOOnOoOrOsOzO{O}O~OOOOOOOOOOOOOõõçÕõߵõõõçÕ#hTRB*CJOJQJ^JaJph#hTRB*CJOJQJ^JaJphhTR0JB*CJaJphhTR0JB*CJaJphhTR0JB*CJaJphhTR0JB*CJaJphCCC#hTRB* CJOJQJ^JaJphhTR0JB* CJaJph3OOOOOOOOOOOOOO$P%PxPyPPPPPIQJQPQQQYQZQ[Q\QcQdQmQpQwQxQQQQQQQQQQQQ㕃uuuuhTR0JB*CJaJph#hTRB* CJOJQJ^JaJphhTR0JB* CJaJph#hTRB*CJOJQJ^JaJphhTR0JB*CJaJphCCC#hTRB*CJOJQJ^JaJphhTR0JB*CJaJphhTR0JB*CJaJphhTR0JB*CJaJph.QQQQQQQQQQQQQQQQQQQQQQRR R R RR R#R&R(R*R+R,R2R3R8R9R:R;RFRIRPRSRVRYR`RcRfRiRrRsRRç񙇙#hTRB*CJOJQJ^JaJphCCChTR0JB*CJaJphCCChTR0JB*CJaJphhTR0JB*CJaJph#hTRB*CJOJQJ^JaJphhTR0JB*CJaJphhTR0JB*CJaJphhTR0JB*CJaJph5RRRRRRRRRRRRRRRRRRRRRRRRRRRRS SYSZSSSSSS㵣ygյ#hTRB*CJOJQJ^JaJphCCChTR0JB* CJaJphhTR0JB*CJaJphhTR0JB*CJaJph#hTRB* CJOJQJ^JaJphhTR0JB* CJaJph#hTRB*CJOJQJ^JaJphhTR0JB*CJaJphCCChTR0JB*CJaJphhTR0JB*CJaJph$SSSSSS3T4T;T=T}T~TTTTTTTTTUUU UCUDUMUNUUUUUUUUUVV!V#VDVEVNVOVVVVVVVVVVVVW,W-WWWWWWWWWWõhTR0JB*CJaJphCCChTR0JB*CJaJphhTR0JB*CJaJph#hTRB* CJOJQJ^JaJphhTR0JB* CJaJphhu0JB* CJaJphBWWWWWWWWX X X XXXXXXXX!X$X,X.X/X3X6X7XIXJXNXOXXXYXcXfXnXpXqXuXѿѱ񱑱ѱ񱃱ѱucѿѿѱ#hTRB* CJOJQJ^JaJphhTR0JB* CJaJphhTR0JB*CJaJphCCC#hTRB*CJOJQJ^JaJphhTR0JB*CJaJphhTR0JB*CJaJph#hTRB*CJOJQJ^JaJphhTR0JB*CJaJph#hTRB*CJOJQJ^JaJphhTR0JB*CJaJph&uXxXyXXXXXXXXXXXXXXXXXXXXXXXXXXYYY#Y'Y(Y*Y,Y0Y2Y7Y9Y:Y>YCY̰ttthTR0JB*CJaJphhTR0JB*CJaJphhTR0JB*CJaJph#hTRB*CJOJQJ^JaJph6hL%hL%5CJOJPJQJ\aJmH nH sH tH hD/h6[FPJhTR0JB* CJaJphhTR0JB*CJaJphhTR0JB*CJaJph*CYDYLYMYQY^Y_YiYjYkYlYoYqYYYYYYYYYZZUZVZZZZZZZZZ[[3[5[y[{[[[[[[[[[ \õѧљyyhj0JB*CJaJph#hTRB*CJOJQJ^JaJphhTR0JB*CJaJphhTR0JB*CJaJphCCChTR0JB* CJaJphhTR0JB*CJaJphhTR0JB*CJaJphhTR0JB*CJaJph#hTRB*CJOJQJ^JaJph/ \ \-\.\H\I\\\]\s\t\\\\\\\\\\\]]L]M]e]g]]]]]]] ^^&^(^7^8^h^i^^^^^^^^^^^^^^_._/_S_T_Y_[_`_b_h_i_________````/`0`E`F`y`z`````2a3a7ahTR0JB*CJaJph#hTRB*CJOJQJ^JaJphX7a:a;a=aUaaa8babbbcc]d9e?eDebeeeeeee ffkfmffȵ{m_Q_Q_Q_Q_Q_hz0JB*CJaJphhz0JB*CJaJphhz0JB*CJaJphhz0JB*CJaJph*h?phL%6PJ]aJmH nH sH tH *h?phL%5PJ\aJmH nH sH tH $h?phL%PJaJmH nH sH tH 6h?phL%5CJOJPJQJ\aJmH nH sH tH hD/h6[FPJhTRhTR0JB*CJaJph8bbb]d:e?efZgiii#jjlmmm dgdL%ddd@&[$\$gdL%gdzddd[$\$gdL%fffffggXgYgoiwiiiiiiտտկՙzaI4(h?phL%CJPJaJmH nH sH tH .h?phL%6CJPJ]aJmH nH sH tH 0hL%hL%CJOJPJQJaJmH nH sH tH <j7:hWAhWACJOJPJQJUaJmHnHsH tH u*h?phL%5PJ\aJmH nH sH tH h4PJaJmH nH sH tH *h?phL%6PJ]aJmH nH sH tH $h?phL%PJaJmH nH sH tH h0hzmHnHsH hzB*^Jphfffi#j;j>jUjjjjj$k'k0k1k=kpkrkukwkzk}kkkkkkkkkkklllѾѨњ~p~p~bp~bp~bp~b~p~b~p~XhzB*^Jphfffhz0JB*CJaJphhgd0JB*CJaJphhz0JB*CJaJphhz0JB*CJaJphhz0JB*CJaJph*h?phL%6PJ]aJmH nH sH tH $h6PJ]aJmH nH sH tH $h?phL%PJaJmH nH sH tH 6h?phL%5CJOJPJQJ\aJmH nH sH tH  lllllmmmm泚0hL%hL%CJOJPJQJaJmH nH sH tH 9jyhDhThDhTCJOJPJQJUaJmH nH sH tH *h?phL%6PJ]aJmH nH sH tH $h?phL%PJaJmH nH sH tH  h0hz21h:p=. A!"#$% DdP  3 3"(((Dd!  A8?8Auto-configuring SQL BackupPicture 2Auto-configuring SQL Backupb'c̗(.'n'c̗(.PNG  IHDROPLTE]_,KHRWܽx,C?,\5k PTcJvc&Q p΄>o'UX(ϳϟ g5jx~¯$\t7>S\Z' : <~ +LB 'g keg~6|KH$\З\ttT*}9mSpM>3Mϥ_ҕ%+ ӉEVuӍ0ŨȔbq] RJ-RgO(P6_`d/Zfs~?zք.׀] ӟ#?`@  ,Pd0?CB[.rꋿ=مsr~p?(P1Ō\mxEOr?!<'Ja1C ߢ)?lK5 x3TSΘ?݆'D6<-g0ի ((aDI3|cLE64?I<' dhݤtM<'Iؠldpv%͌owq'qA=u x\wՀɠ5(J}%Rngj] %O{3U5!5p!`H0H5h Հߟ~Ôʏ+ƿ&!LJaxFUɔcwV@dUT2UM&C\N3KrʼboGF>JF^ ~66wvv&''S~7Uڨ76+rZ'y>beY裑_..0 ^-RoHܜ\[T"2UǥrX(BIWOȸw©לV|O@iF }x t&KRT,dՓ䓙_Fގm15)O.۵urHhCqm%>Vtfi)H,\_BO9נ->GbH:;uR?{F\W<` o7_!84"ORspSU"S7F63 U25_ F6'Owd#eE çʼnRgE/|]xy ~>AjʯID5qP(x;?޽kyW'N3:WɅ`)*OCd4xvX(8y]8u9O+~_sO,w @P{JT0Ux1>[&-OG 74{Ti *uY+д0i<*>{] o|b:/ڪǴFv}ޝ+DD}tDR.(֥L=f[ CǏΓ`z>Os/Oe OV%+?Qnr<.4IYT8gvyBdCSw'~l%?rfw`11qTX%E 8txK?cYKWσlbP- k_<~v:Bt}~kT\yGi+VD^~ V~aDhP?ouX?]bk_>'8{бX(! g!sЇ񣯗Hjfj*Oj޸Fq.ʉ:u6ގ,\+ү޻w/]! Ky>rL٥br|pTYVU3Uϙ m~{AhcHm-2"OЇuqy^{f~*PhJkS%DteAKkԓZ|x*$')S+՞\\Yj<:&G:O芵](X 0pMGuUodTmkc%ѻ30H~Bձ4Um O0F?C-`sӬoJȬoMՀ˛\0 &ccϾgB5gA5+ TJwZڑtH$t!e< ou=|E9h6CՀE& <ڢ7{PR9y2Ay?y?r/V%])HI-U'KhF[]Xi4.U+"h<JuKgXs17m`z.&cwkXoLOáUdloRrZ^YU<r rT<;.SPf1v";ox32X>gL50Xb^Ռ ρoϠ.&~kL0E3Ilp?4:gx=D&32&`gd cb Ȫ2 D`gdUAg"0DV3L 3"+YU&B b_MlxvRHkx&Cd0<#D|͕s^PxX?{ʳYr3|8LX|8<ېL,Ox,! "d"%C b;ϖM*ZRU`ӓzfȢL VTt)slJfp#ӥ8{mB.FW3CnoKؐ.Co2x`h0c}:7IR޽PCJڲ5}z!l<Խ:LRNL&ݏ JriUߡTՊ |qaw}*vj֠+Z]}df a QtWBѪZ~0>m.ݙXۮ@ɿH3O6+ۆ'?Lƭ/.ҕrLqN"¬w'_;D- O:ٛ ϥ"'슃i>X$w #x^hVxfj|fz@LؤL9mjxz+tsgm{9) ['Osrf뗙r¦DP3lm2}rmV+.3URr|3|R;;3jr r _n-2:O᫗ŇioOVˠt7|f.)Q;~KMҁR{[ <%Hro)\fm7,F?<H3WT;D0LyJ} !?߿V ϸ3z83 g7y۲T`.Ϸi˶-Rxڿɓ) UT&C>Eu懙.RR(&s 2:D'V7˙)8Z@QY~k;Ԥ'¿h 4c'>VxD1PuSy𔣚$QHl\k-vS n/~7L--7Z[Ÿ'2X !T >)O,KMln<7ꯨ~It;w8e_A^<KB%ƭW_qJ?;TGUCiR#x*Ssb_נxc ucʦiM? 6vPaW ~[]撛NI+ C U[4\Xbۑ}X6ՋAn ' ?٪9^,҇텳ꋵ=}]Q-՚f1wؐ|[\}]yeJ}_8LnH>کoƪc]^$!S%M1za=Xy &INyʕslEDѡE}r>e7dBG4'zz]Or)g<[ jN5|>ARAjK;??~{u)+:)}y&ſj=dQ'¿g:^{%uy !}]FW:*ߡ$Lgg€tXó L3)}gD<~9 Qbmx{~^ʷѩGܶ×D4<ע|?烧PBD?Nco;}Vkd9xȟ~>?ݥ84}]b'(x&d>6緤FH3X*f|WFP4} R:coѫu/ó{uݍ nr0;n5<;~^Cf36<}!i@?~rNen~Yw*g@kxFp3BDucJ Obف'?^Ijƿ/]{Jr 3t ^gINax&NEӬJOrn<oE.y{:#^Sģgx1|Z:xNA~tGv |1xpI533kk6jp25 E.x  0R8<Sż|Hj3|W}1/ih@ <}P;6}l$R*Mgx4}TO~_H: N;R=:<N'm?CIENDB`$$If!vh5155/#v1#v#v/:V t0u!6,5)55 / 34 BytL%$$If!vh5155/#v1#v#v/:V t0u!65)55 / 34 BytL%$$If!vh5155/#v1#v#v/:V t0u!65)55 / 34 BytL%$$If!vh5155/#v1#v#v/:V t0u!65)55 / 34 BytL%$$If!vh5155/#v1#v#v/:V t0u!65)55 / 34 BytL%$$If!vh5155/#v1#v#v/:V t0u!65)55 / 34 BytL%$$If!vh5 55V#v #v#vV:V t0f!6555 / 34 BytL%$$If!vh5 55V#v #v#vV:V t0f!6555 / 34 BytL%$$If!vh5 55V#v #v#vV:V t0f!6555 / 34 BytL%$$If!vh5 55V#v #v#vV:V t0f!6555 / 34 BytL%$$If!vh5 55V#v #v#vV:V t0f!6555 / 34 BytL%$$If!vh5 55V#v #v#vV:V t0f!6555 / 34 BytL%$$If!vh5 5 55#v #v #v#v:V t0u!65 5 55/ 34 BytL%$$If!vh5 5 55#v #v #v#v:V t0u!6,5 5 55/ 34 BytL%$$If!vh5 5 55#v #v #v#v:V t0u!6,5 5 55/ 34 BytL%$$If!vh5 5 55#v #v #v#v:V t0u!6,5 5 55/ 34 BytL%$$If!vh5 5 55#v #v #v#v:V t0f!65 5 55r/ 34 BytL%$$If!vh5 5 55#v #v #v#v:V t0f!6,5 5 55r/ 34 BytL%$$If!vh5 5 55#v #v #v#v:V t0f!6,5 5 55r/ 34 BytL%$$If!vh5 5 55#v #v #v#v:V t0f!6,5 5 55r/ 34 BytL%BlDd%B   A.?.SQL Backup history logPicture 3SQL Backup history logb$k \D ׽~zXk{:nj \D ׽~zXPNG  IHDRPKPLTE,5q LJҾ݄dbSsssȘN]a333UTP֤H>***KKKŋ\&kjoCCA{{{؀;@T~e~zboΝ`OUe3w"%W29:::33{h1\)(#ڗ`3" !fff舌ñYiÿ*+_+&P1V[[]gw]Z#BBׅ(!ff(αڳU@$ٍʄ3f3ffEJ m×hYC)|" p kb"5XqǁbKGDHgIFg cmPPJCmp0712HshIDATx^cƑ7 i2ؤIDHHcO'1Tny1Ľ+4U97|cQaҪ]"{ڒ/_? f4bWAaP9Cj!Wz/#XJ9g5.Yӈ_1|Jޖ3>?r3ٗGZu{~-!3'q#_E=[$]ҫ߄$ k aP{N p"=@IX$(;NO>bDN]"0 w.Wį=˪ng%BӪhU73ߧ`NԿsG_3^|بeD;I EղUcNNJ\%`@]XB8& ӌżC/{ 8 C'C^R`)8j7aTð96 ӆh59˘adaEx0DEQr~yr)GZEP,L:^!g0 u :0 H%z O݁%m_yAǎڐ02Qݮ7Bm<,L1n.F10L$Fe BqK(G`,s^$7ݬ̴|1-np䣇4mbƑ[@l~zChmHhs  |A8`e+Qw/2 hr4lcRFQlE Bi# h@+6+E0 Ȇ1 "mq1*F #ӮV.C+ DY" fG2D΢Ndb ,1,`ԋ (1` QmyRKjGRo8U/->Y6:S0!Sx(jaUc93,q.( ">.ią#s*UeVkUc*ao6Z'WFg{06JI' 8hZJdWǯFeZnA~Ƿm] cHFC Q .7 )B -ŀEi3*eLL#Ih*;Q<v!CB f+q5ȭA!nܷ090 a}| FfH,vmqbJ;f˘Nlʅ|!8Q rtFC.Fm#^f 2A+s cj 8MN#Ǖ&id9|rX3[y fP}cr} ƆىΦ/ʶ$'mx#EqD>cCP~;~sw73*w sD3seaQ͂U؁\5K2Xcm.P2pp 0_DMvc15dan0qV Ʉ 007ňon𔊗3ŇX _Ɂd[`SZUǹOv9Xـ_ǶV%yq*ge=:%\k|I$sc烦4-puNhYQ(7Am(ݼKŭҚg-+Ct!~rx u>]`Mʹ4v5cc>ɀ`>"YԮ\fu!xe"pW'8 Xf$@b4͚iB϶k՗J$dJEx(`"S+#$s^ُ&te\V>,b.2b;k!=_Ni L6?g2f3mfSbZv)<>0I3kg39Ň 5b~ Pq!X~(VյeP1 zռyxܜb(5"'{aMr]dx fږLVj;Gb?G~-NsEc7HVYaMHJ:4"sd@6m 4f@[Tn5F@LGћMD!`ʝ@\|Ry2&f߬L2(! #:8/χϛ׎SI6d3ܱ|S-e)N-߬go<\԰"ʏ i bˏ 4YQ2nDY Pn7(xda<(2jIιn䛪1֚w62͔b*yd֛jHs_8&-BH`;!-6tOA`9v'JVUB<%>ϐ*u;ݨFԄ زW-))ECS(*4-՛s͝.x;)kSqKo !D `Jx Kk?!aL͙h+!a4<21BӇg[„s'$/&ZY3&v*q%9h4t 1TAI4fքOgc)T>P#CLYCMݤ{>0=:b@UPrzZ x(%&δeAhrcWH:2@ײJ S!VRѱ, +=P\+HNWkS0c IvΫ,NQtPUL H~#<~sQ/.i1aU\/^__F/aB<ɋfH5=LB\*SUdS2ܨhʟfVIU$a, 0S0kT*g}˔t_ s].GSX>aJG,V ֪(kh'ݛu{*zǺ{UGty Wt>T~sd@R4_^]ۭV3R0V< kjv+Nh)#;Ί-r2֎_WX0XJM}MZeefCjy%td3Y'1۔0/a +PWTP:YL,1%ba&--%bQc3B$Ë\A% D@޽; P;eYPWi5] *e3{kf8KRDf³ZOIWL2ۺfW| n@c (1z0mhU:~E-h82H .F:)∦;_g= `M!0Ї-}S)hF Ɍ:2i&0A?jy1ū ?4QCi'9XF# !Ua7Fa%Q VF{\'1 \4`/<1 ҲFnTmuGAT~mY=mYQ7f5[Q+Ю`jk>R ,s;05` pVw!U¬o4ʰ 3a[ b3 V53Pl~seLh b+5]ܕ!0695twy> T7rˎs~Jq~ -XRQ*PP:[w`CbMˋ‘0`I X FfWWG]H`B櫊 DQѫw 8cNm4RXE,%QUhhEzQNK!0jyG~by˰1(t00H"?@ՀDN'#ưmq"Ё'v)˰(,subCmZorypB$G(,D-^8V9`g($25v ȗ>%2w8[2Qi*$&EHd$ƞȴrKVİUf8QĞل1a΃aѨ,|;QeF0UA 8k~"QV9쩫MW~>EcYsPA2ۖzZQDLlҦ-x&tM9 l5?[ S#QS5c83ٿ`Rb9ݒA+dDR';ϲ҂dFz#bGp@Vȏ W% )Kqå!g >ޣMoUPRHE\Cbҁ(^N 7aDaz9ފBhPPk>Bf",K'Ȍ 1EKpٮS$͡D~UrUqyK~g* K ̮$ǧ(4_*.a$<KO"|L ' $B/S1)X:ϴ%1ݻz}8+uckBY:HM:TGф~d0QcQ f1Ř:aL۝PV㹾$)-@5u)Woʷ ˺_{aWs !A_AU oP15|H H- o?$ #n " 6;ύT&ϭ s!r&+`P幕Y\!R0bIإ䋘PxK]̝y1UFMwW;;j76|*۱d @& jCӝv3\n/HDpч&l٤jXT gfSc#4\zѧ3Lz\?~c_ԏW-lo2 :p7OG+ ;P ?i6RxO .*1R)L,T:'4pLQᮁ ^|2ͩv]f$`Gն$$K0+e. JBOȀope?}Ʉ>r[l?9DnZ㪎;E',r1gv2ɑ;:9k a LpI.ƩlkG53s[KCMɹ2{k?npU ax=qyi,V qH@ D{ܫ_͢_m̏(Hq9Fm Z|y5d򨂋ljr* $5rCwd\"F7-lKώ{Y9 0;6tЅWs.aRކQw%GTV0?fh޸Az@ R;)  iϭĜ!/ ZFV5o +1)<9 _:6O?zs^]\=MNnAxa cՎldrN-n`;t9bO qKn43mET?cbs\B[νV-޻( k چ9{wfܻ鸑@Bdc @FvLWŎlTNIRW`30X[;z{GhcpH:$1)$q؛;Cݸ^+lѨ1{5 V*@n:lYm R,-"z룏_~oab8{nv8l^ٿuztbފND eؘe@i7wOSJi1% XӔ7"t, n:މ@*=uB.HJ+pgEH='NCÖ`MX%{K(Wc8\#/"F2!Ha>&;`^<ՕMasR.岍<<` |pJg*=lMۤD_|`ً3 $H S/'eJv,ΖvRu$cҩXT @fLz8$=ks~cұ#n{@vR tY y݈=팺*lSihVLFUOVwtO%\I7鍽8wKN[j]HBE"4O]3'Ie[GKg:)~)WK+3\To:+Zzsrܾf*xH ;4N!VFzXTaSp2u r<@߃{X#zqA\[ KD5 ӓSsy9) [r%Dcv.5':P/ 7pzTS eiNzn)~f-nNo-C1Ƚ*vnX =|f_$mѮ ٶ?nMݸq Vv#՟42M{vgdED&8,}/~c𣖚&6,o8-f zƒiCz6 RKp8g3P,ӜiV -wzbbRgiK"K8|\ԑ+֎:iA4{=d@^!(#v)Q@&]SO3.~{^d:㛯OQ԰kF:įmI 1@APT4h÷Nۆ6G>.|Vj>NDQPX+V N90ѧ4g@ͦt$"y(NJ&D"{IyP1v"'xG+QHud9a 3r w V gwntL/c `FvaKHO/ưa[@jooJ!XIt)/?x@Oj}J`I*aU+O(jpC6?\ͷI%( CS!+L%^tE\GнY4dCJ BFƤ0dBQ;jS!$qC\um->~j0BXIdq a.Tl xyk xD1x:5!ktD_J~JxwE A-i4p5YņNEIzW! aM(Sbb-Rw 65Ui-n# (0lfBW}~{3)̌\yǀ:ݯˑmiHy~!!.4]hntr&\uTS w/aЪƚG+ݧ6¡ةL$(dn^} GA >S %1[s+p Hw=E`2*鉪>2IL!5=b}!#鄥H3وsڙ 'MSjڄ0f#h kW͔Yl)6pz5^oE:xr r[ x ؔZ i6zRЀapik,:~S<6ݎC4Ϫ #YjWs:*]Aڑq0J`؏M*fiYYA%% JJKY~IPuZRe7zIj/c .vw dQG U=d^"xcQAZMNRSDW\$.7%+K;P?f1 B N)8R#.=`33 ;Rm)HNJ?T2ELN<[ʺ o8 U0<~ut߃3~d{=oSL[vǜ^Sq vsoF~Lc[e{%|񣱍H"ILZ Ep|/(> G'D $/*R-P`| L*(lL (! lA0ogc8fZԑǫ%a +P&9JH=Y BIߟ5D@tP&J (,N-Î +,%(3PB{G#a9E_<)j +(P&EzT<?F<z&*(D bh4GA3- Z1h8>m nfscX3_q˗{n61&\[0"HB٨KF vU"|Nvө@OWs`:M^):ѺEg=KLOfG9z>hΌ:JLf8 9q hahfJkp3>q EH{t? \f-(88|?}{ ,9 *bT[ټL/ѨISϴLM,tdNQ3IaĦ9x0[u pR0%':fCkeIڰoһW&F\/.Hd6Į%: *y}f}9[En?yr?zvtMYcox/oWia 95Bp)\dl܀TG9BE°1ìjbۅ }QJ(vy 0kU^xD"-8eCAlH-&6#tE#gЃeAnjm͂!Za &OdQ#jUP;FFp ;LΙtV4U8k)%7ըɭu 03#9@agܜ hpODNȀ\z~?.];܉ ʭVB;_mHj kHEˣVNFUuzZ rঘDvۿ b4 XXʁ_R::2qwla06ڭt+1dYa1-s0z5fWZGV!i@_9bVu8Gm0B!K\fꑈ4a /\Yg +6;FU9vʀ_g޼ho JǗ,Y|ă&(X;kT08;3Z:Ě,eg6LJ7fXPp%[(B-g_V%<4l\*8͓H!xVp>*'9˜豌E+KZ28;ؼ[ b "5ΰùknDփ#Qj\ÓL#CaņDڍ|W^JTypM9*pX`Qhc*#gІzFfucQ&a~UX<}cTAiЀ2Cv aB+,@첝* D@l^VAp"roQ@89馭ax<<,AڹlRBsʄN)`q |k?LF&] ǩV@HJڇG7eAL s`:PBiÊW22#4#ECN:Pz)`U FoCk5PT #{Ъy )-CJ`D @?l6X  #w1pYGw7o~yw(pw筲JĹ,N`M6دhJI@نIPi)F݂S2c -H1EȮjYafEST0"r #x]^R$ 3`A8TlDUcZ%+p^2\˴d&$-&"zh!K J(tw} XKu~*f"L qqf^bvqJ H `“ar6;RA7E}@Y#S}0 G6P|7TYC"v% N9p41 TEQ B-նд|p  2A&4"(9Ԩ?xd( 8 hJRyڐ^1g܃Κkf@j& I11r3 % Bmޑ$ $8ƭr>ks[?Ly9sXVbdzXpt.VH b*UV7%2ڣ<79z, ֡By9lpRAޥorNeFOV ӥi̛jjӁRXSįQ.*"7LU6}CV@g@<cnHU*Qb0۩c!0`BPO$M0_~!]ئ sry؂J FܗVUF4xo!(4/MfRCM1V@#mpަ7 ֝-q RWK{kgX 18,1c7PoK)_X^oCѱl,WYZAuL&o-t{xK*}2 auP9gCمCd!t(ȳi9XY kPd4T<ژ۝PycmaOmec^JJH0b͇?ңVg7ϨZl`e ;z4_f5_lߞA9җI?Q pL fQ3+I1dV:-dKCxr|6l6 ## A;0DaDz'vcj:1)tǃas=t 8R8k {)5l3~O&Zə؞AE)m<9٪iCߏo3 zLu!Rx"g㛍tZpP.J T:[m NDßO> hbt=Q(_Cz<TA-j>+(,5df žHx 8gj # !|lW'iuLKbz˴)،G Ro$J%>@+xX 8EMJNoo;A乡 MawJdcM[h 8Y`@7jx7KNʚG&DQef̥f엜A b(!މԫvg ˌ5>B2 L\!@&SD)b}%ӷm@ّ( =c\u=UziKs [_T"a!pT ~ΡP]K.^z7~~%a! ꀢ C+o.L"d b2Y"I 6^yd1cs%/ [VM1woXƚ\.\j%lFoC(NOVf<.5Keܙy*af@h;h.bz*QM۵;V_; 6 5>66c> *:<o^mD'P Wpxޗ&0/<|K7蘈Պ_V'@h+J[+OB'5*bthj9}Vtv-7YXb4$ļj?HxЃԕy^tFJĽaVw_x>8jTFXw!jlr1}U@h7JNQ5k(IRU, Ѣzg ovWtK{|^[qb!/H@UA2 Xw [0T8s}t juU)O>˂QC8MSf?# q&pV0`F'*fQgQ27 dQJYi8 ǂ^0 G`KBj%0K YV%K$(Ff&jkEIO6wv}zrgToB2w~ƥKy,gV i٧7IP&1YȰ|#|j}@@k8i&O5J_**YL]Lm G}0P+H@W@UG0J-2|rZU7+gU05Pk9`<-$2b >~57e/K%Jay% #)jS Z(k2b9ϊ`'jeht29HB%O]|?Sh}@l^C1iHz>̳ g$0QoAO@U?Q(#фC]~q}g#K!C5L 3%hޠv h ^F%;!tbdq&Aa42x%a1Ӹy?LtWDD*2$cNK[\JZlrXSJ ċ6-t[g@3饚صdhJ8ȁ@+?;/jÌ$ /l.A}ʷtkxXV[6awE?wx8GF/din*7P /ρxx͆Y8Dz|oentRBüQDow㭞odˠKh ibpn\- 3[php!֘1V8J]fXAe\ y\t(n 9d"D[~9?4G]+aUiF?6e ˹p8-̆`S{83gL+ *(kAjyNv+r&an[w>/o Wp-sЀ U+ n+bPiCZQ)3CdPvb5pܰyU*g=cpR :`e0qk[>@Lh;d`Љp Nn0()D0 O.pylЂmsf*Rqt Gm"sP"%ۆI8E!cI&z[a)ځ!C`PlDh:`"x?G7pfRa(ja>)ĩq4wG}G_VcuR#ҩi;|_ q#vx\3}zKsZAIf7w䵱s%ụ I+ )g36CVEȺCsJRxkBb)t?U  'YEC:C FMK5A c߬$UHk$iY`uZ+Q23ܡM?ENH85yFΠ<x Zsa1aua~mWЂSY=xp< >誶eÕ7/姗-oyNc_+l_j|ؘVJ x:5m I;bˣ6Xǰ&6|>Cm^̳yd2I {X3\,` n D,\Z|%;ګ5DA0 Ĥ[̝;5&D 9 UKpFk|V]LXW#Z{&֡7Fs|}Le&dhGRXw!6J#hx?=zL1A pT )v,K;^w4aJ/pӎ0VSE"D$NXd\1eQmץV'F6#,gu80~'=5i츛75} q*QYaUA^d Od&SMۨF{bNo,cPL^.{~KI?%[1Ee6;ξ3TɯQU'pZ^P\ѓO'_zf ]#Pe>j&~s_F#(fB,WHÃ~VVOe,SJzV8bemRhc~yRf24ŰLڨ@n}xAW'Nd8b,?e ⣹h6,;53A/T:@SeVcfC9ڂLj͠ h' ZnjfRck0e,B7u6m͒Urw=^8jOna_υL3? ꃣ.(s_s|Cǂ=KSjS}/uA)8M@hR%pvΛqyZ>ǘ#ICOJ y#Y]1 Hbp0W);.4#bXpVfI{uzgQLb3Bl>~Oc,zQvhͭ~~O~'?yt~=0'||rrs?1 -)6 ۍT%2[iLOo6Q|C2bguS)vzN4i ^?:㚗7a;^5=9j-\=VSifyl57X%xz*e1GRn30}TO<79Ehp ފ[$[p&'!8QO4w>I xz }n|şA=o;Odۿ:}/~0 ,;j>LX ' zn;0W]83nH:iW=!CVrY8QH -pcӷ4ҳ 6mU{G:!oG} ޿ޯޜ;iACPF'ׄ:ֶyY]b8rebp&Ӧ x@2܁•5FP()c x q8}d7hب= {!8:g|԰#ʚ<~qb[‚㰾lZ HhR8,,RFP`bs\uYD{-jlݿ~+@+6فmf^Gx7}?|g?޾ӟWCtc:ű\> JFwCY7zUK)f.}$F5{ƭ18r6sn~\[&P%e+F \l)|+/FK~KT)e 撹St#rXC}@@Q-֮=@)˳Hq&Qfys+OwT;np ♐쑿s Gs?|_}٣~_}۟a%!x5!E0Fk*L,TH@1 ٶӈF.HOS~ LxO0e B +d<%HM1 e LTJԃm߅m&*gsm6mu++} }$sQ-<#`QHX LSyi[}@ !Lo`) /tgS϶uCLBĭ;j(5mg|O"ŅOznq?{G})qnZژsVT7{-6lBHxT-c9T֖UntN&F ~gi]UDYTNf٥+f ddp\os7*'1IGqy ZdL4W*u}ןTFPu[ ~ttSW>}٣_ï|%R}Yu^SYnn X}UeYsjn'&/RYC;lv0(?dzVVjhg+Ql=AӛRPk9 `&%x3+niOLY%V!Wz63wByeT T*ӊJ~ XӸ,kn%-I >Oz뫏Xe}Nv]!_|񳧷?~ O`}g}_=Ͽa c-YnyP!V €-:ׯTVj=)^WUO`Vv9Pca?cr@aǎ!AW>'4As(UNCuwȞ-徸;rM˃=jd˂D垣90 % X LZVLE6ؗ MzkI{ZTv` 6h`nL %ah X:)>g\\PoIR;RJbIENDB`DdP  3 3"((j" 666666666vvvvvvvvv666666>6666666666666666666666666666666666666666666666666hH6666666666666666666666666666666666666666666666666666666666666666662 0@P`p2( 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p8XV~ OJPJQJ_HmH nH sH tH J`J L%Normal dCJ_HaJmH sH tH tt L% Heading 1ddd@&[$\$.5CJ0KH$OJPJQJ\^JaJ0mH sH tH p"p L% Heading 2ddd@&[$\$*5CJ$OJPJQJ\^JaJ$mH sH tH p2p L% Heading 3ddd@&[$\$*5CJOJPJQJ\^JaJmH sH tH pBp L% Heading 4ddd@&[$\$*5CJOJPJQJ\^JaJmH sH tH DA`D Default Paragraph FontRi@R 0 Table Normal4 l4a (k ( 0No List ZZ L%Heading 1 Char&5CJ0KH$OJPJQJ\^JaJ0tH VV L%Heading 2 Char"5CJ$OJPJQJ\^JaJ$tH VV L%Heading 3 Char"5CJOJPJQJ\^JaJtH V!V L%Heading 4 Char"5CJOJPJQJ\^JaJtH l^2l L%0 Normal (Web)ddd[$\$$CJOJPJQJ^JaJmH sH tH bBb L%pulloutddd[$\$$CJOJPJQJ^JaJmH sH tH *W@Q* L%`Strong5\.Xa. L%@Emphasis6]lrl L% illustrationddd[$\$$CJOJPJQJ^JaJmH sH tH dd L%Caption1ddd[$\$$CJOJPJQJ^JaJmH sH tH (( L%pullout1jj L% widepulloutddd[$\$$CJOJPJQJ^JaJmH sH tH dd L%indentedddd[$\$$CJOJPJQJ^JaJmH sH tH RR L%0 Balloon Text dCJOJQJ^JaJVV L%0Balloon Text CharCJOJQJ^JaJmH sH OzCodeXd2( Px 4 #\'*.25@94$9DM ^m$'CJOJPJQJ^JaJmHnHtH uBb@B z0 HTML CodeCJOJPJQJ^JaJH H  No Spacing CJ_HaJmH sH tH D Dgd0Revision!CJ_HaJmH sH tH PK![Content_Types].xmlj0Eжr(΢Iw},-j4 wP-t#bΙ{UTU^hd}㨫)*1P' ^W0)T9<l#$yi};~@(Hu* Dנz/0ǰ $ X3aZ,D0j~3߶b~i>3\`?/[G\!-Rk.sԻ..a濭?PK!֧6 _rels/.relsj0 }Q%v/C/}(h"O = C?hv=Ʌ%[xp{۵_Pѣ<1H0ORBdJE4b$q_6LR7`0̞O,En7Lib/SeеPK!kytheme/theme/themeManager.xml M @}w7c(EbˮCAǠҟ7՛K Y, e.|,H,lxɴIsQ}#Ր ֵ+!,^$j=GW)E+& 8PK!Ptheme/theme/theme1.xmlYOo6w toc'vuر-MniP@I}úama[إ4:lЯGRX^6؊>$ !)O^rC$y@/yH*񄴽)޵߻UDb`}"qۋJחX^)I`nEp)liV[]1M<OP6r=zgbIguSebORD۫qu gZo~ٺlAplxpT0+[}`jzAV2Fi@qv֬5\|ʜ̭NleXdsjcs7f W+Ն7`g ȘJj|h(KD- dXiJ؇(x$( :;˹! I_TS 1?E??ZBΪmU/?~xY'y5g&΋/ɋ>GMGeD3Vq%'#q$8K)fw9:ĵ x}rxwr:\TZaG*y8IjbRc|XŻǿI u3KGnD1NIBs RuK>V.EL+M2#'fi ~V vl{u8zH *:(W☕ ~JTe\O*tHGHY}KNP*ݾ˦TѼ9/#A7qZ$*c?qUnwN%Oi4 =3ڗP 1Pm \\9Mؓ2aD];Yt\[x]}Wr|]g- eW )6-rCSj id DЇAΜIqbJ#x꺃 6k#ASh&ʌt(Q%p%m&]caSl=X\P1Mh9MVdDAaVB[݈fJíP|8 քAV^f Hn- "d>znNJ ة>b&2vKyϼD:,AGm\nziÙ.uχYC6OMf3or$5NHT[XF64T,ќM0E)`#5XY`פ;%1U٥m;R>QD DcpU'&LE/pm%]8firS4d 7y\`JnίI R3U~7+׸#m qBiDi*L69mY&iHE=(K&N!V.KeLDĕ{D vEꦚdeNƟe(MN9ߜR6&3(a/DUz<{ˊYȳV)9Z[4^n5!J?Q3eBoCM m<.vpIYfZY_p[=al-Y}Nc͙ŋ4vfavl'SA8|*u{-ߟ0%M07%<ҍPK! ѐ'theme/theme/_rels/themeManager.xml.relsM 0wooӺ&݈Э5 6?$Q ,.aic21h:qm@RN;d`o7gK(M&$R(.1r'JЊT8V"AȻHu}|$b{P8g/]QAsم(#L[PK-![Content_Types].xmlPK-!֧6 +_rels/.relsPK-!kytheme/theme/themeManager.xmlPK-!Ptheme/theme/theme1.xmlPK-! ѐ' theme/theme/_rels/themeManager.xml.relsPK] e j #Q&-'()?+[-./0 22566789:@<A=?@hAbCpDnFHJLMMOQRSWuXCY \7afilm79:;=ELUVWXYZ[\]^`abcdefghijklmnopqrstuvwxyz{|}B2Mq*@T5 !$d$$$%W%%%Q&8bm8<>?@ABCDFGHIJKMNOPQRST_~\(# AA@0(  B S  ?"**5 T i m boqz|ovgcq;P****121Z5u5p<<GESEPPZZ[[r\\\\^^__I_S_paua;bTbbbdddddeeT i k}\\:]>]ce|ee333333389MMMMNMMMMMMMMMMMNN!N#NNNONNNNNNNNNNNNOOOQQQQ;b>beJLZ#41^`.^`.pp^p`.@ @ ^@ `.^`.^`.^`.^`.PP^P`.JL aP aa{ a#`(a#.af?a)wEaXa>\a-uaMlc~a =OL%M4WA6[FDhT j`j?pzrTRgdo4%uee@bb`((bbe@UnknownG* Times New Roman5Symbol3. * Arial?= * Courier New7.{ @Calibri5.*aTahomaA BCambria Math"qhdr&dr&,~V 3,~V 320wewe2HP  $PL%2!xx Disaster Recovery for SQL ServerSQL Server Backup & RecoveryHugo Shebbeare Alice Smith Oh+'0, @L l x $Disaster Recovery for SQL Server SQL Server Backup & RecoveryHugo ShebbeareNormal Alice Smith2Microsoft Office Word@F#@Xc5@Xc5 ,~V՜.+,0 hp  Intellabase Solutions3we !Disaster Recovery for SQL Server Title  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry FZst5Data 1Table+WordDocument4SummaryInformation(DocumentSummaryInformation8CompObjy  F'Microsoft Office Word 97-2003 Document MSWordDocWord.Document.89q