數據庫快照是MSSQL2005的新功能,僅在 Microsoft SQL Server 2005 Enterprise Edition 中可用。而且SQL Server Management Studio 不支持創建數據庫快照,創建快照的唯一方式是使用 Transact-SQL。
數據庫快照是數據庫(稱為“源數據庫”)的只讀靜態視圖。在創建時,每個數據庫快照在事務上都與源數據庫一致。在創建數據庫快照時,源數據庫通常會有打開的事務。在快照可以使用之前,打開的事務會回滾以使數據庫快照在事務上取得一致。
客戶端可以查詢數據庫快照,這對於基於創建快照時的數據編寫報表是很有用的。而且,如果以後源數據庫損壞了,便可以將源數據庫恢復到它在創建快照時的狀態。
創建數據庫快照可以:
·維護歷史數據以生成報表。可以通過快照訪問特定時間點的數據。例如,您可以在給定時間段(例如,財務季度)要結束的時候創建數據庫快照以便日後制作報表。然後便可以在快照上運行期間要結束時創建的報表。
·將查詢實施在數據庫的快照上,可以釋放主體數據庫上的資源。
·加快恢復操作效率,使用快照將數據庫恢復到生成快照時的狀態比從備份還原快得多;但是,此後您無法對數據進行前滾操作。根據磁盤資源,可以每 24 小時創建 6 到 12 個滾動快照。每創建一個新的快照,就刪除最早的快照。如果要恢復,可以將數據庫恢復到在錯誤發生的前一時刻的快照。或者,也可以利用快照中的信息,手動重新創建刪除的表或其他丟失的數據。例如,可以將快照中的數據大容量復制到數據庫中,然後手動將數據合並回數據庫中。
但是只要存在數據庫快照,快照的源數據庫就存在以下限制:
·必須在與源數據庫相同的服務器實例上創建數據庫快照。
· 數據庫快照捕獲開始創建快照的時間點,去掉所有未提交的事務。未提交的事務將在創建數據庫快照期間回滾,因為數據庫引擎 將對快照執行恢復操作(數據庫中的事務不受影響)。
·當將源數據庫中更新的頁強制壓入快照時,如果快照用盡磁盤空間或者遇到某些錯誤,則該快照將成為可疑快照並且必須將其刪除。有關詳細信息,請參閱刪除數據庫快照。
·快照為只讀。
· 禁止對 model 數據庫、master 數據庫和 tempdb 數據庫創建快照。
· 不能更改數據庫快照文件的任何規范。
·不能從快照中刪除文件。
·不能備份或還原快照。
·不能附加或分離快照。
·不能在 FAT32 文件系統或 RAW 分區中創建快照。
· 數據庫快照不支持全文索引,不能從源數據庫傳播全文目錄。
·數據庫快照將繼承快照創建時其源數據庫的安全約束。由於快照是只讀的,因此無法更改繼承的權限,對源數據庫的更改權限將不反映在現有快照中。
·快照始終反映創建該快照時的文件組狀態:在線文件組將保持在線狀態,離線文件組將保持離線狀態。有關詳細信息,請參閱本主題後面的“含有離線文件組的數據庫快照”。
·如果源數據庫的狀態為 RECOVERY_PENDING,可能無法訪問其數據庫快照。但是,當解決了源數據庫的問題之後,快照將再次變成可用快照。
·只讀文件組和壓縮文件組不支持恢復。嘗試恢復到這兩類文件組將失敗。有關恢復的詳細信息,請參閱恢復到數據庫快照。