此備份和還原主題與所有 SQL Server 資料庫有關。
差異備份是以最新的先前完整數據備份為基礎。 差異備份只會擷取自該完整備份後已變更的數據。 差異備份所依據的完整備份稱為差異 基礎 。 除了僅複製備份之外,完整備份可作為一系列差異備份的基礎,包括資料庫備份、部分備份和文件備份。 檔差異備份的基礎備份可以包含在完整備份、文件備份或部分備份內。
優點
相較於建立完整備份,建立差異備份的速度可能非常快。 差異備份只會記錄自從最近一次完整備份後已變更的資料。 這有助於進行頻繁的數據備份,進而降低數據遺失的風險。 不過,在還原差異備份之前,您必須還原其基礎備份。 因此,從差異備份還原時,必須採取比從完整備份還原更多的步驟和時間,因為需要兩個備份檔。
如果資料庫的子集比資料庫的其餘部分更頻繁地修改,差異資料庫備份特別有用。 在這些情況下,差異資料庫備份可讓您經常備份,而不需要完整資料庫備份的額外負荷。
在完整恢復模式下,使用差異備份可以減少您必須還原的記錄備份數目。
差異備份概觀
差異備份會擷取任何 範圍 的狀態(八個實體連續頁面的集合),這些範圍在建立差異基底和建立差異備份時有所變更。 這表示給定差異備份的大小取決於自基底以來已變更的數據量。 一般而言,基底越舊,新的差異備份就會越大。 在一系列的差異備份中,經常更新的範圍可能會在每個差異備份中包含不同的數據。
下圖顯示差異備份的運作方式。 此圖顯示24個數據範圍,其中6個已變更。 差異備份只包含這 6 個數據範圍。 差異備份作業依賴於一個位圖頁面,其中包含每個擴展的位元。 對於自基底之後更新的每個範圍,位會在點陣圖中設定為 1。
備註
只做複製的備份不會更新差異位圖。 因此,僅限複製備份不會影響後續的差異備份。
在基底之後相當快進行的差異備份通常明顯小於差異基底。 這樣可節省儲存空間和備份時間。 不過,當資料庫隨著時間變更時,資料庫與特定差異基底之間的差異會增加。 差異備份與其基礎備份之間的時間間隔越長,差異備份的大小就越可能增加。 這意味著差異備份最終可以在大小上接近差異基底。 大型差異備份會失去備份更快且佔用較小空間的優點。
隨著差異備份的大小增加,還原差異備份可能會大幅增加還原資料庫所需的時間。 因此,建議您依設定間隔進行新的完整備份,以建立數據的新差異基底。 例如,您可能每週進行整個資料庫的完整備份 (亦即,完整資料庫備份),然後在該週定期進行一連串的差異資料庫備份。
在還原時,在還原差異備份之前,您必須還原其基底。 然後,只還原最新的差異備份,以將資料庫轉送至該差異備份建立的時間。 一般而言,您會還原最新的完整備份,後面接著以該完整備份為基礎的最新差異備份。
具有 Memory-Optimized 數據表的資料庫差異備份
如需差異備份和具有記憶體最佳化資料表的資料庫相關資訊,請參閱備份具有記憶體最佳化 Memory-Optimized 資料表的資料庫。
Read-Only 資料庫的差異備份
對於唯讀資料庫,單獨使用的完整備份比搭配差異備份使用時更容易管理。 當資料庫是只讀時,備份和其他作業無法變更檔案中包含的元數據。 因此,差異備份所需的元數據,例如差異備份開始的記錄序號(差異基底 LSN) 會儲存在 master 資料庫中。 如果在資料庫是唯讀的狀態下取得差異基礎,差異位圖會顯示自基礎備份以來發生了比實際更多的變更。 額外的數據是透過備份讀取,但不會寫入備份,因為儲存在備份集系統數據表中的differential_base_lsn是用來判斷自基底之後的數據是否已實際變更。
重建、還原或將只讀資料庫分離再附加時,差異基底資訊會遺失。 這是因為 master 資料庫未與用戶資料庫同步。 SQL Server 資料庫引擎無法偵測或防止此問題。 任何稍後的差異備份都不是以最新的完整備份為基礎,而且可能會提供非預期的結果。 若要建立新的差異基底,建議您建立完整的資料庫備份。
搭配 Read-Only 資料庫使用差異備份的最佳做法
建立只讀資料庫的完整資料庫備份之後,如果您想要建立後續的差異備份,請備份 master 資料庫。
如果 master 資料庫遺失,請先還原它,再還原用戶資料庫的任何差異備份。
如果您卸離並附加您打算稍後使用差異備份的唯讀資料庫,只要可行,請同時取得只讀資料庫和 master 資料庫的完整資料庫備份。
相關工作
另請參閱
備份概觀 (SQL Server)
完整資料庫備份 (SQL Server)
完整的資料庫還原 (完整復原模式)
完整資料庫還原 (簡單復原模式)
交易記錄備份 (SQL Server)