一、 知識點(diǎn)
完全備份: 備份全部選中的文件夾,并不依賴文件的存檔屬性來確定備份那些文件。(在備份過程中,任何現(xiàn)有的標(biāo)記都被清除,每個(gè)文件都被標(biāo)記為已備份,換言之,清除存檔屬性)。完全備份也叫完整備份。
差異備份: 差異備份是針對完全備份:備份上一次的完全備份后發(fā)生變化的所有文件。(差異備份過程中,只備份有標(biāo)記的那些選中的文件和文件夾。它不清除標(biāo)記,即:備份后不標(biāo)記為已備份文件,換言之,不清除存檔屬性)。
增量備份: 增量備份是針對于上一次備份(無論是哪種備份):備份上一次備份后,所有發(fā)生變化的文件。(增量備份過程中,只備份有標(biāo)記的選中的文件和文件夾,它清除標(biāo)記,即:備份后標(biāo)記文件,換言之,清除存檔屬性。)
事務(wù)日志備份: 在特定事務(wù)日志備份之前執(zhí)行的完整數(shù)據(jù)庫備份和上次差異備份(如果有)。在完整數(shù)據(jù)庫備份之后執(zhí)行的所有事務(wù)日志備份或在特定事務(wù)日志備份之前執(zhí)行的差異備份(如果您還原了差異備份)。如果你設(shè)置了恢復(fù)模式為【簡單】,你將無法使用【事務(wù)日志】備份。SQL Server 2000 和 SQL Server 2005: 創(chuàng)建事務(wù)日志備份,您必須使用完整恢復(fù)或大容量日志記錄恢復(fù)模型。
部分備份: 通過指定 READ_WRITE_FILEGROUPS 創(chuàng)建的備份稱為“部分備份”。在簡單恢復(fù)模式下,只允許對只讀文件組執(zhí)行文件組備份。還原的數(shù)據(jù)備份類型:數(shù)據(jù)庫備份、部分備份或文件備份。對于數(shù)據(jù)庫備份或部分備份,日志備份序列必須從數(shù)據(jù)庫備份或部分備份的結(jié)尾處開始延續(xù)。對于一組文件備份,日志備份序列必須從整組文件備份的開頭開始延續(xù)。
文件備份: “文件備份”包含一個(gè)或多個(gè)文件(或文件組)中的所有數(shù)據(jù)。
日志鏈: 連續(xù)的日志備份序列稱為“日志鏈”。日志鏈從數(shù)據(jù)庫的完整備份開始。通常,僅當(dāng)?shù)谝淮蝹浞輸?shù)據(jù)庫時(shí),或者將恢復(fù)模式從簡單恢復(fù)模式切換到完整恢復(fù)模式或大容量日志恢復(fù)模式之后,才會(huì)開始一個(gè)新的日志鏈。除非在創(chuàng)建完整數(shù)據(jù)庫備份時(shí)選擇覆蓋現(xiàn)有備份集,否則現(xiàn)有的日志鏈將保持不變。在該日志鏈保持不變的情況下,便可從媒體集中的任何完整數(shù)據(jù)庫備份還原數(shù)據(jù)庫,然后再還原相應(yīng)恢復(fù)點(diǎn)之前的所有后續(xù)日志備份。 恢復(fù)點(diǎn) 可以是上次日志備份的結(jié)尾,也可以是任何日志備份中的特定恢復(fù)點(diǎn)。
一個(gè)備份方案例子: 某個(gè)站點(diǎn)在星期天晚上執(zhí)行完整數(shù)據(jù)庫備份。在白天每隔 4 小時(shí)制作一個(gè)事務(wù)日志備份集,并用當(dāng)天的備份重寫頭一天的備份。每晚則進(jìn)行差異備份。如果數(shù)據(jù)庫的某個(gè)數(shù)據(jù)磁盤在星期四上午 9:12 出現(xiàn)故障,則該站點(diǎn)可以:
1) ???? 備份當(dāng)前事務(wù)日志;(已經(jīng)出現(xiàn)故障了,如何備份當(dāng)前事務(wù)日志?)
2) ???? 還原從星期天晚上開始的數(shù)據(jù)庫備份;
3) ???? 還原從星期三晚上開始的差異備份,將數(shù)據(jù)庫前滾到這一時(shí)刻;
4) ???? 還原從早上 4 點(diǎn)到 8 點(diǎn)的事務(wù)日志備份,以將數(shù)據(jù)庫前滾到早上 8 點(diǎn);
5) ???? 還原故障之后的日志備份。這將使數(shù)據(jù)庫前滾到故障發(fā)生的那一刻。
?
二、 還原步驟
創(chuàng)建一個(gè)叫TestBackup的數(shù)據(jù)庫,創(chuàng)建一張叫Table1的表,這個(gè)時(shí)候進(jìn)行一次完整備份,備份文件為:TestBackupDB-full.bak;接著創(chuàng)建表Table2后進(jìn)行差異備份,備份文件為:TestBackupDB-diff.bak;接著創(chuàng)建表Table3后進(jìn)行事務(wù)日志備份(如果數(shù)據(jù)庫設(shè)置了恢復(fù)模式為【簡單】,那么在備份類型選項(xiàng)中將看不到【事務(wù)日志】),備份文件為:TestBackupDB-log.bak;
創(chuàng)建一個(gè)叫TestBackup2的數(shù)據(jù)庫,用于測試TestBackup數(shù)據(jù)庫的備份文件的還原。
(圖1:創(chuàng)建庫結(jié)構(gòu))
(圖2:備份類型)
?????? 下面我們就可以對三個(gè)備份文件:TestBackupDB-full.bak、TestBackupDB-diff.bak、TestBackupDB-log.bak進(jìn)行還原:
?????? 步驟1: 還原完整備份文件TestBackupDB-full.bak,選項(xiàng)如圖4、圖5所示,還原成功后數(shù)據(jù)列表就會(huì)如圖6所示,這是因?yàn)榛謴?fù)狀態(tài)選項(xiàng): 不對數(shù)據(jù)庫執(zhí)行任何操作,不回滾未提交的事務(wù)。可以還原其他事務(wù)日志。(RESTORE WITH NORECOVERY)
(圖3:進(jìn)入SSMS還原)
(圖4:還原常規(guī))
(圖5:還原選項(xiàng))
(圖6:完整備份還原)
步驟2: 還原差異備份文件TestBackupDB-diff.bak,操作如步驟1所示,這個(gè)時(shí)候的數(shù)據(jù)庫還是跟圖6的狀態(tài)一樣的。
步驟3: 還原事務(wù)日志備份文件TestBackupDB-log.bak,如圖7進(jìn)入事務(wù)日志的還原操作界面;看圖8的選項(xiàng)中有指定事務(wù)的時(shí)間進(jìn)行還原(還原過程中的恢復(fù)狀態(tài)都是默認(rèn)為RESTORE WITH RECOVERY,所以這里沒有提及這個(gè)選項(xiàng))。還原后的TestBackup2數(shù)據(jù)庫,還原之后的數(shù)據(jù)庫TestBackup2如圖9所示。
(圖7:進(jìn)入事務(wù)日志)
(圖8:事務(wù)日志)
(圖9:還原后的數(shù)據(jù)庫)
?
三、 升級
通常來說文章寫到這里就應(yīng)該結(jié)束了,但是很幸運(yùn),再給你介紹一下如何在對表進(jìn)行分區(qū)后的還原操作,從上面的操作來看只包括了mdf和ldf文件,但如果多了幾個(gè)ndf文件,這些還原又一樣嗎?所以我稱這部分的內(nèi)容為升級。
情景一:如果本來就有對應(yīng)的分區(qū)文件的,只要在還原的時(shí)候修改【還原為】的文件名就可以進(jìn)行還原了。
情景二:如果剛剛新建了分區(qū)文件組和文件,這個(gè)時(shí)候接著還原備份就會(huì)出現(xiàn)圖10的錯(cuò)誤(不知道是不是在SQL Server 2005的問題);要解決這個(gè)問題有兩個(gè)方法,第一個(gè):重啟數(shù)據(jù)庫服務(wù)再還原;第二個(gè):設(shè)置數(shù)據(jù)庫的【限制訪問】設(shè)置為【Single】;

?
(圖10:錯(cuò)誤)
?
四、 參考文獻(xiàn)
SQL SERVER 數(shù)據(jù)的差異備份如何還原
SQL Server 2008 事務(wù)日志備份工作原理
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
