適用於:SQL Server
SQL Server 可讓您選擇復原資料庫,而不理會偵測到的錯誤。 有一項重要的新錯誤偵測機制,就是可以選擇建立備份總和檢查碼,這是由備份作業所建立,並可使用還原作業來加以驗證。 您可以控制作業是否要檢查錯誤,以及在發生錯誤時,是要停止作業,還是要繼續進行。 如果備份包含備份總和檢查碼,RESTORE 和 RESTORE VERIFYONLY 陳述式就可以檢查錯誤。
注意
鏡像備份最多可提供四個媒體集的複本(鏡像),在媒體損壞導致錯誤時提供其他可恢復的複本。 如需詳細資訊,請參閱鏡像備份媒體集 (SQL Server)。
備份檢查碼
SQL Server 支援三種類型的總和檢查碼:分頁上的總和檢查碼、記錄區塊中的總和檢查碼,以及備份總和檢查碼。 產生備份總和檢查碼時,BACKUP (備份) 會驗證從資料庫讀取的資料,是否與資料庫中的任何總和檢查碼或損毀頁指示一致。
BACKUP 陳述式可選擇性地計算備份資料流的備份總和檢查碼;如果分頁總和檢查碼或損毀頁資訊顯示在特定的分頁上,備份該分頁時,BACKUP 也會驗證該分頁的總和檢查碼、損毀頁狀態及分頁識別碼。 建立備份檢查碼時,備份作業不會新增任何檢查碼至頁面。 分頁會依照其存在於資料庫中的樣子來備份,而且備份不會修改分頁。
因為驗證及產生備份總和檢查碼會造成額外負擔,使用備份總和檢查碼可能會影響效能。 工作負載及備份的輸送量可能都會受到影響。 因此,您可以選擇是否要使用備份總和檢查碼。 決定要在備份期間產生總和檢查碼時,請小心監視對 CPU 造成的額外負擔,以及對系統上任何並行工作負載所造成的影響。
BACKUP 絕不會修改磁碟上的來源分頁或是分頁的內容。
已啟用備份總和檢查碼時,備份作業會執行下列步驟:
在將分頁寫入備份媒體之前,備份作業會先驗證分頁層級的資訊 (分頁總和檢查碼或損毀頁偵測,若其中一項存在的話)。 如果兩者都不存在,則備份無法驗證分頁。 未驗證的頁面將按原樣包含,並且其內容將加入整體備份檢查碼。
如果備份作業在驗證期間發生分頁錯誤,則備份失敗。
注意
如需有關分頁檢查碼和損毀頁偵測的詳細資訊,請參閱 ALTER DATABASE 陳述式中的 PAGE_VERIFY 選項。 如需詳細資訊,請參閱 ALTER DATABASE SET 選項 (Transact-SQL)。
不論頁面總和檢查碼是否存在,BACKUP 都會產生備份資料流的個別備份總和檢查碼。 還原作業可以選擇性地利用備份總和檢查碼來驗證備份是否損毀。 備份總和檢查碼儲存在備份媒體中,而不是儲存在資料庫頁面中。 在還原時,您可以選擇性地使用備份總和檢查碼。
備份組會以旗標標示為包含備份總和檢查碼 (在 msdb..backupset 的 has_backup_checksums資料行中)。 如需詳細資訊,請參閱 backupset (Transact-SQL)。
在還原作業期間,如果備份媒體上有備份總和檢查碼,依預設 RESTORE 和 RESTORE VERIFYONLY 陳述式都會驗證備份總和檢查碼及分頁總和檢查碼。 如果沒有備份總和檢查碼,這二種還原作業仍會繼續進行,但不會執行任何驗證;這是因為沒有備份總和檢查碼,還原作業就不能確實地驗證分頁總和檢查碼。
在備份或還原作業期間對分頁總和檢查碼錯誤的回應
根據預設,在發生分頁總和檢查碼錯誤之後,BACKUP 或 RESTORE 作業會失敗,而 RESTORE VERIFYONLY 作業會繼續。 但是,您可以控制給定的作業在發生錯誤時是失敗還是盡其所能地繼續。
如果 BACKUP 作業在發生錯誤後繼續,該作業會執行下列步驟:
將備份媒體上的備份組標註為包含錯誤,並且在 msdb 資料庫的 suspect_pages 資料表中追蹤該分頁。 如需詳細資訊,請參閱 suspect_pages (Transact-SQL)。
將錯誤記錄在 SQL Server 錯誤記錄檔中。
將備份集標示為包含這種類型的錯誤(在 msdb..backupset 的 is_damaged 資料行中)。 如需詳細資訊,請參閱 backupset (Transact-SQL)。
發出訊息指出已成功產生備份,但包含頁面錯誤。
相關工作
若要啟用或停用備份校驗碼
控制備份作業期間錯誤回應
另請參閱
ALTER DATABASE (Transact-SQL)
BACKUP (Transact-SQL)
backupset (Transact-SQL)
鏡像備份媒體集 (SQL Server)
RESTORE (Transact-SQL)
RESTORE VERIFYONLY (Transact-SQL)