MSSQL2005的新功能創(chuàng)建數(shù)據(jù)庫快照
數(shù)據(jù)庫快照是MSSQL2005的新功能,僅在 Microsoft SQL Server 2005 Enterprise Edition 中可用。而且SQL Server Management Studio 不支持創(chuàng)建數(shù)據(jù)庫快照,創(chuàng)建快照的唯一方式是使用 Transact-SQL。
數(shù)據(jù)庫快照是數(shù)據(jù)庫(稱為“源數(shù)據(jù)庫”)的只讀靜態(tài)視圖。在創(chuàng)建時,每個數(shù)據(jù)庫快照在事務上都與源數(shù)據(jù)庫一致。在創(chuàng)建數(shù)據(jù)庫快照時,源數(shù)據(jù)庫通常會有打開的事務。在快照可以使用之前,打開的事務會回滾以使數(shù)據(jù)庫快照在事務上取得一致。客戶端可以查詢數(shù)據(jù)庫快照,這對于基于創(chuàng)建快照時的數(shù)據(jù)編寫報表是很有用的。而且,如果以后源數(shù)據(jù)庫損壞了,便可以將源數(shù)據(jù)庫恢復到它在創(chuàng)建快照時的狀態(tài)。創(chuàng)建數(shù)據(jù)庫快照可以:<!--[if !supportLists]--><!--[endif]-->維護歷史數(shù)據(jù)以生成報表。可以通過快照訪問特定時間點的數(shù)據(jù)。例如,您可以在給定時間段(例如,財務季度)要結(jié)束的時候創(chuàng)建數(shù)據(jù)庫快照以便日后制作報表。然后便可以在快照上運行期間要結(jié)束時創(chuàng)建的報表。 <!--[if !supportLists]-->將查詢實施在數(shù)據(jù)庫的快照上,可以釋放主體數(shù)據(jù)庫上的資源。 <!--[if !supportLists]-->加快恢復操作效率,使用快照將數(shù)據(jù)庫恢復到生成快照時的狀態(tài)比從備份還原快得多;但是,此后您無法對數(shù)據(jù)進行前滾操作。根據(jù)磁盤資源,可以每 24 小時創(chuàng)建 6 到 12 個滾動快照。每創(chuàng)建一個新的快照,就刪除最早的快照。如果要恢復,可以將數(shù)據(jù)庫恢復到在錯誤發(fā)生的前一時刻的快照。或者,也可以利用快照中的信息,手動重新創(chuàng)建刪除的表或其他丟失的數(shù)據(jù)。例如,可以將快照中的數(shù)據(jù)大容量復制到數(shù)據(jù)庫中,然后手動將數(shù)據(jù)合并回數(shù)據(jù)庫中。 但是只要存在數(shù)據(jù)庫快照,快照的源數(shù)據(jù)庫就存在以下限制:<!--[if !supportLists]-->必須在與源數(shù)據(jù)庫相同的服務器實例上創(chuàng)建數(shù)據(jù)庫快照。 <!--[if !supportLists]--> <!--[endif]-->數(shù)據(jù)庫快照捕獲開始創(chuàng)建快照的時間點,去掉所有未提交的事務。未提交的事務將在創(chuàng)建數(shù)據(jù)庫快照期間回滾,因為數(shù)據(jù)庫引擎 將對快照執(zhí)行恢復操作(數(shù)據(jù)庫中的事務不受影響)。 <!--[if !supportLists]-->當將源數(shù)據(jù)庫中更新的頁強制壓入快照時,如果快照用盡磁盤空間或者遇到某些錯誤,則該快照將成為可疑快照并且必須將其刪除。有關(guān)詳細信息,請參閱刪除數(shù)據(jù)庫快照。 <!--[if !supportLists]-->快照為只讀。 <!--[if !supportLists]--> <!--[endif]-->禁止對 model 數(shù)據(jù)庫、master 數(shù)據(jù)庫和 tempdb 數(shù)據(jù)庫創(chuàng)建快照。 <!--[if !supportLists]--> <!--[endif]-->不能更改數(shù)據(jù)庫快照文件的任何規(guī)范。 <!--[if !supportLists]--><!--[endif]-->不能從快照中刪除文件。 <!--[if !supportLists]-->不能備份或還原快照。 <!--[if !supportLists]-->不能附加或分離快照。 <!--[if !supportLists]-->不能在 FAT32 文件系統(tǒng)或 RAW 分區(qū)中創(chuàng)建快照。 <!--[if !supportLists]--> <!--[endif]-->數(shù)據(jù)庫快照不支持全文索引,不能從源數(shù)據(jù)庫傳播全文目錄。 <!--[if !supportLists]-->數(shù)據(jù)庫快照將繼承快照創(chuàng)建時其源數(shù)據(jù)庫的安全約束。由于快照是只讀的,因此無法更改繼承的權(quán)限,對源數(shù)據(jù)庫的更改權(quán)限將不反映在現(xiàn)有快照中。 <!--[if !supportLists]-->快照始終反映創(chuàng)建該快照時的文件組狀態(tài):在線文件組將保持在線狀態(tài),離線文件組將保持離線狀態(tài)。有關(guān)詳細信息,請參閱本主題后面的“含有離線文件組的數(shù)據(jù)庫快照”。 <!--[if !supportLists]-->如果源數(shù)據(jù)庫的狀態(tài)為 RECOVERY_PENDING,可能無法訪問其數(shù)據(jù)庫快照。但是,當解決了源數(shù)據(jù)庫的問題之后,快照將再次變成可用快照。 <!--[if !supportLists]-->只讀文件組和壓縮文件組不支持恢復。嘗試恢復到這兩類文件組將失敗。有關(guān)恢復的詳細信息,請參閱恢復到數(shù)據(jù)庫快照。 下面就請看一個簡單的例子:-- 創(chuàng)建數(shù)據(jù)庫快照CREATE DATABASE AdventureWorks_snapshot_0600 ON
( NAME = AdventureWorks_Data, FILENAME =
'E:SQL2005MSSQL.1MSSQLDataAdventureWorks_snapshot_0600.ss' )AS SNAPSHOT OF AdventureWorks;
GO-- 恢復數(shù)據(jù)庫快照RESTORE DATABASE AdventureWorks FROM DATABASE_SNAPSHOT = AdventureWorks_snapshot_0600
GO-- 刪除數(shù)據(jù)庫快照DROP DATABASE AdventureWorks_snapshot_0600
GO
相關(guān)文章:
1. sqlserver 合并列數(shù)據(jù)的實現(xiàn)2. SQL Server Express 數(shù)據(jù)庫自動部署問題及解決3. Oracle數(shù)據(jù)庫經(jīng)典優(yōu)化之索引原理篇4. 解決mybatis三表連接查詢數(shù)據(jù)重復的問題5. DB2數(shù)據(jù)庫中如何實現(xiàn)Oracle的某些功能6. Oracle數(shù)據(jù)庫實現(xiàn)遠程訪問方法7. SQLServer導出數(shù)據(jù)庫字典的詳細圖文教程8. Oracle數(shù)據(jù)庫19C的安裝與配置指南(2022年最新版)9. MySQL實現(xiàn)數(shù)據(jù)插入操作的示例詳解10. Oracle 11g數(shù)據(jù)庫使用expdp每周進行數(shù)據(jù)備份并上傳到備份服務器
