Sql-Server

在實時 SQL Server 備份期間會發生什麼?

  • May 22, 2019

當我告訴他們我可以備份仍在執行的 SQL Server 數據庫時,我的一些同事感到很驚訝,並想知道這怎麼可能。我知道 SQL Server 能夠在數據庫仍處於聯機狀態時備份它,但我不知道如何解釋為什麼它是可能的。我的問題是這對數據庫有什麼影響?

如果在備份執行時修改了數據(通過插入、更新或刪除),備份是否會包含這些更改,還是會在之後將其添加到數據庫中?

我假設日誌文件在這裡起著重要作用,但我不太確定如何。

編輯:作為說明,我的案例涉及使用 SQL Server 代理備份數據庫以及在此過程中數據庫修改的影響。

完整備份包含數據和日誌。對於數據,它只是將數據庫的每個頁面複製到備份中,就像它讀取頁面時一樣。然後它將所有“相關”日誌附加到備份媒體中。這至少包括備份操作開始時的 LSN 和備份操作結束時的 LSN 之間的所有日誌。實際上通常有更多的日誌,因為它必須包括備份開始時的所有活動事務和複製所需的日誌。請參閱揭穿有關完整數據庫備份的幾個神話

當數據庫恢復時,所有數據頁被複製到數據庫文件中,然後所有日誌頁被複製到日誌文件中。數據庫此時不一致,因為它包含可能彼此不同步的數據頁圖像。但是現在正在執行正常的恢復。由於日誌包含備份期間的所有日誌,因此在恢復結束時數據庫是一致的。

引用自:https://serverfault.com/questions/100490