SQLServer數據庫差異備份
差異備份 (differential backup)定義
一種數據備份,基於完整數據庫或部分數據庫或一組數據文件或文件組(差異基準)的最新完整備份,並且僅包含自確定差異基準以來發生更改的數據。
使用SSMS數據庫管理工具進行數據庫差異備份
1、選擇數據庫-》右鍵點擊-》選擇任務-》選擇備份。
2、在備份數據庫彈出框中-》選擇備份類型為差異-》然後刪除系統生成的目標文件-》然後點擊添加。
3、在選擇備份目標彈出框中-》點擊選擇備份路徑。
4、在定位數據庫文件彈出框中,先選擇需要備份的文件路徑,然後數據備份文件名,點擊確定。
5、在備份數據庫彈出框,點擊確定。
6、查看備份是否成功。
使用SSMS數據庫管理工具進行數據庫差異還原
差異備份與還原須知:差異備份是上次完整備份之後發生改變的副本。所以還原是需要上次的完整備份和最近一次差異備份。差異備份有兩步操作,第一步為還原數據庫,第二步還原差異部分。
還原數據庫步驟
1、選擇數據庫-》右鍵點擊-》選擇任務-》選擇還原-》選擇數據庫。
2、在還原數據庫彈出框中-》先點擊設備-》再點擊還原文件路徑。
3、在選擇備份設備彈出框中-》點擊添加文件。
4、在定位備份文件彈出框中-》先選擇文件夾-》再選擇要還原的文件-》點擊確定。
5、進入還原模式。
6、覆蓋現有數據庫可不勾選-》選擇數據庫恢復模式為設置為NORecorvery。
7、查看數據庫狀態。
還原差異文件步驟
1、選擇要還原的數據庫-》右鍵點擊-》選擇任務-》選擇還原-》選擇文件和文件組。
2、在還原文件和文件組彈出框-》選擇設備-》選擇文件還原路徑。
3、在選擇備份設備彈出框-》選擇添加。
4、在定位備份文件彈出框-》選擇要還原的差異文件-》點擊確定。
5、在還原文件和文件組彈出框-》選擇文件-》點擊選項。
6、選擇恢復狀態-》點擊確定。
7、還原結果。
使用T-SQL腳本進行差異備份
語法:backup database 數據庫名 to disk=文件路徑 with differential;
示例:backup database testss to disk=‘D:\SqlTest\backup\t3.bak‘ with differential;
使用T-SQL腳本進行差異還原
語法:第一步先指定數據庫恢復模式:restore database 數據庫名 from disk=數據庫文件 with norecovery ;
第二步再恢復差異備份:restore database 數據庫名 from disk=差異文件 with recovery;
示例:第一步先恢復備份數據庫:restore database testss from disk=‘D:\SqlTest\backup\testss.bak‘ with norecovery ;
第二步再恢復差異備份:restore database testss from disk=‘D:\SqlTest\backup\t3.bak‘ with recovery;
(註意數據庫如果存在,可刪除或者使用覆蓋先有數據庫)
總結
優點:1、與創建完整備份相比,創建差異備份的速度可能非常快。 差異備份只記錄自差異備份所基於的完整備份後更改的數據。 這有助於頻繁地進行數據備份,減少數據丟失的風險。 但是,在還原差異備份之前,必須先還原其基準。 因此,從差異備份進行還原必然要比從完整備份進行還原需要更多的步驟和時間,因為這需要兩個備份文件。
2、如果數據庫的某個子集比該數據庫的其余部分修改得更為頻繁,則差異數據庫備份特別有用。 在這些情況下,使用差異數據庫備份,您可以頻繁執行備份,並且不會產生完整數據庫備份的開銷。
3、在完整恢復模式下,使用差異備份可以減少必須還原的日誌備份的數量。
缺點:差異備份基於最後一次完整備份的差異,那麽,對於一個繁忙的數據庫,在一段時間內做了幾次差異備份,無論這中間有多少次Checkpoint,SQL Server依然將這些基於完整備份的差異頁面放入差異備份文件,按道理來說,一個頁面在一次Checkpoint之後,如果沒有再發生任何修改,那麽是不需要放入差異備份文件裏面的(如果是基於最後一次差異的差異),因為差異位圖無法基於差異的差異,這樣會導致,有時候差異備份文件比完整備份文件還要大。
SQLServer數據庫差異備份