一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

從一個目錄的備份文件中自動產(chǎn)生SQL Server恢復(fù)腳本

 wwwijhyt圖書館 2014-05-09
問題

  數(shù)據(jù)庫管理員眼下的一個挑戰(zhàn)是備份和恢復(fù)數(shù)據(jù)庫。備份在自動調(diào)度表中完成,但是恢復(fù)可以采取很多不同的版本,你可能需要恢復(fù)一個產(chǎn)品數(shù)據(jù)庫,恢復(fù)一個發(fā)展包,或者測試數(shù)據(jù)庫,或者只在另外的地方創(chuàng)建數(shù)據(jù)庫副本。有一些自動執(zhí)行恢復(fù)過程和創(chuàng)建腳本的方法,但是這個方法顯示了一種方式,那就是只讀取存在于備份文件中的目錄的內(nèi)容。

  專家解答

  以下是讀取目錄中的內(nèi)容和創(chuàng)建需要通過執(zhí)行來恢復(fù)數(shù)據(jù)庫的恢復(fù)命令的一種簡單方法。這個腳本可以用于全部備份,差異備份和事務(wù)日志備份。

  在我們開始之前,下面的腳本假設(shè)情況如下:

  1、 恢復(fù)的數(shù)據(jù)庫擁有和備份數(shù)據(jù)庫一樣的名稱。

  2、 恢復(fù)的數(shù)據(jù)庫和備份數(shù)據(jù)庫存儲在相同的位置。

  3、 文件名具有以下的格式

  dbName_YYYYMMDDHHMM.xxx

  4、 文件擴(kuò)展名如下

  全部備份 – BAK

  差異備份 – DIF

  事務(wù)日志備份 – TRN

  5、 XP_CMDSHELL 是可用的

  6、 不存在可能破壞恢復(fù)鏈的缺失的事務(wù)日志

  所以,讓我們按照下面的步驟來創(chuàng)建自己的備份:

  •    在午夜進(jìn)行全部備份
  •    早上3:15開始每三個小時進(jìn)行一次差異備份
  •    早上1點開始每半個小時進(jìn)行一次日志備份

  在上午九點,我們可能會得到以下創(chuàng)建于2008年9月10日的備份文件,這個備份文件遵從以上規(guī)則,命名為Customer。

  Customer_200809100000.BAK

  Customer_200809100100.TRN

  Customer_200809100130.TRN

  Customer_200809100200.TRN

  Customer_200809100230.TRN

  Customer_200809100300.TRN

  Customer_200809100315.DIF

  Customer_200809100330.TRN

  Customer_200809100400.TRN

  Customer_200809100430.TRN

  Customer_200809100500.TRN

  Customer_200809100530.TRN

  Customer_200809100600.TRN

  Customer_200809100615.DIF

  Customer_200809100630.TRN

  Customer_200809100700.TRN

  Customer_200809100730.TRN

  Customer_200809100800.TRN

  Customer_200809100830.TRN

  Customer_200809100900.TRN

  如果我們想在早上九點對最新的全部備份,差異備份和事務(wù)日志備份做一個恢復(fù),那么我們需要恢復(fù)以下的文件:

  Customer_200809100000.BAK

  Customer_200809100615.DIF

  Customer_200809100630.TRN

  Customer_200809100700.TRN

  Customer_200809100730.TRN

  Customer_200809100800.TRN

  Customer_200809100830.TRN

  Customer_200809100900.TRN

  下面的腳本會讀取目錄并且為我們創(chuàng)建恢復(fù)腳本。僅有的兩個需要改變的參數(shù)是@dbName 和 @backupPath。

USE Master;

GO 

SET NOCOUNT ON

-- 1 - Variable declaration

DECLARE @dbName sysname

DECLARE @backupPath NVARCHAR(500)

DECLARE @cmd NVARCHAR(500)

DECLARE @fileList TABLE (backupFile NVARCHAR(255))

DECLARE @lastFullBackup NVARCHAR(500)

DECLARE @lastDiffBackup NVARCHAR(500)

DECLARE @backupFile NVARCHAR(500)

-- 2 - Initialize variables

SET @dbName = 'Customer'

SET @backupPath = 'D:\SQLBackups\'

-- 3 - get list of files

SET @cmd = 'DIR /b ' + @backupPath

INSERT INTO @fileList(backupFile)

EXEC master.sys.xp_cmdshell @cmd

-- 4 - Find latest full backup

SELECT @lastFullBackup = MAX(backupFile) 

FROM @fileList 

WHERE backupFile LIKE '%.BAK' 

   AND backupFile LIKE @dbName + '%'

SET @cmd = 'RESTORE DATABASE ' + @dbName + ' FROM DISK = ''' 

       + @backupPath + @lastFullBackup + ''' WITH NORECOVERY, REPLACE'

PRINT @cmd

-- 4 - Find latest diff backup

SELECT @lastDiffBackup = MAX(backupFile) 

FROM @fileList 

WHERE backupFile LIKE '%.DIF' 

   AND backupFile LIKE @dbName + '%'

   AND backupFile > @lastFullBackup

-- check to make sure there is a diff backup

IF @lastDiffBackup IS NOT NULL

BEGIN

   SET @cmd = 'RESTORE DATABASE ' + @dbName + ' FROM DISK = ''' 

       + @backupPath + @lastDiffBackup + ''' WITH NORECOVERY'

   PRINT @cmd

   SET @lastFullBackup = @lastDiffBackup

END

-- 5 - check for log backups

DECLARE backupFiles CURSOR FOR 

   SELECT backupFile 

   FROM @fileList

   WHERE backupFile LIKE '%.TRN' 

   AND backupFile LIKE @dbName + '%'

   AND backupFile > @lastFullBackup

OPEN backupFiles 

-- Loop through all the files for the database 

FETCH NEXT FROM backupFiles INTO @backupFile 

WHILE @@FETCH_STATUS = 0 

BEGIN 

   SET @cmd = 'RESTORE LOG ' + @dbName + ' FROM DISK = ''' 

       + @backupPath + @backupFile + ''' WITH NORECOVERY'

   PRINT @cmd

   FETCH NEXT FROM backupFiles INTO @backupFile 

END

CLOSE backupFiles 

DEALLOCATE backupFiles 

-- 6 - put database in a useable state

SET @cmd = 'RESTORE DATABASE ' + @dbName + ' WITH RECOVERY'

PRINT @cmd

  如果你在一個查詢窗口中運行以上代碼,并且假設(shè)以上列出的文件是存在的,那么你將會得到下面的輸出結(jié)果。在這一時刻,你可以把這些代碼復(fù)制和粘貼到另一個查詢窗口并且執(zhí)行查詢來做真正的恢復(fù)。

  從一個目錄的備份文件中自動產(chǎn)生SQL Server恢復(fù)腳本 - 夢想之鷹 - 夢想之鷹的天空

  正如你所看到的,它做的是全部備份,最新的差異備份接著是所有的事務(wù)日志。這個腳本最后也使用了WITH RECOVERY來使數(shù)據(jù)庫保持可用的狀態(tài)。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    91免费精品国自产拍偷拍| 国产日韩欧美国产欧美日韩| 国产精品香蕉一级免费| 亚洲国产另类久久精品| 精品熟女少妇一区二区三区| 麻豆蜜桃星空传媒在线观看| 国产丝袜极品黑色高跟鞋| 亚洲丁香婷婷久久一区| 国产精品欧美一区两区| 狠狠做深爱婷婷久久综合| 果冻传媒精选麻豆白晶晶| 99久热只有精品视频免费看| 国产老熟女乱子人伦视频| 日韩欧美三级视频在线| 免费观看一区二区三区黄片| 中国美女偷拍福利视频| 亚洲av秘片一区二区三区| 亚洲熟女熟妇乱色一区| 久久99热成人网不卡| 久草热视频这里只有精品| 亚洲午夜福利不卡片在线| 千仞雪下面好爽好紧好湿全文| 好吊日在线视频免费观看| 少妇一区二区三区精品| 在线观看国产成人av天堂野外| 中文字幕亚洲精品乱码加勒比| 殴美女美女大码性淫生活在线播放| 精品国产亚洲av久一区二区三区 | 国产视频福利一区二区| 国产午夜福利不卡片在线观看| 久久精品国产99国产免费| 黄片在线观看一区二区三区| 欧美美女视频在线免费看| 亚洲国产香蕉视频在线观看| 在线视频三区日本精品| 偷拍洗澡一区二区三区| 99在线视频精品免费播放| 99久只有精品免费视频播放| 99精品人妻少妇一区二区人人妻| 欧美日韩精品综合在线| 国产精品午夜视频免费观看 |