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ù)庫快照在事務(wù)上都與源數(shù)據(jù)庫一致。在創(chuàng)建數(shù)據(jù)庫快照時,源數(shù)據(jù)庫通常會有打開的事務(wù)。在快照可以使用之前,打開的事務(wù)會回滾以使數(shù)據(jù)庫快照在事務(wù)上取得一致。客戶端可以查詢數(shù)據(jù)庫快照,這對于基于創(chuàng)建快照時的數(shù)據(jù)編寫報表是很有用的。而且,如果以后源數(shù)據(jù)庫損壞了,便可以將源數(shù)據(jù)庫恢復(fù)到它在創(chuàng)建快照時的狀態(tài)。創(chuàng)建數(shù)據(jù)庫快照可以:<!--[if !supportLists]--><!--[endif]-->維護歷史數(shù)據(jù)以生成報表。可以通過快照訪問特定時間點的數(shù)據(jù)。例如,您可以在給定時間段(例如,財務(wù)季度)要結(jié)束的時候創(chuàng)建數(shù)據(jù)庫快照以便日后制作報表。然后便可以在快照上運行期間要結(jié)束時創(chuàng)建的報表。 <!--[if !supportLists]-->將查詢實施在數(shù)據(jù)庫的快照上,可以釋放主體數(shù)據(jù)庫上的資源。 <!--[if !supportLists]-->加快恢復(fù)操作效率,使用快照將數(shù)據(jù)庫恢復(fù)到生成快照時的狀態(tài)比從備份還原快得多;但是,此后您無法對數(shù)據(jù)進行前滾操作。根據(jù)磁盤資源,可以每 24 小時創(chuàng)建 6 到 12 個滾動快照。每創(chuàng)建一個新的快照,就刪除最早的快照。如果要恢復(fù),可以將數(shù)據(jù)庫恢復(fù)到在錯誤發(fā)生的前一時刻的快照。或者,也可以利用快照中的信息,手動重新創(chuàng)建刪除的表或其他丟失的數(shù)據(jù)。例如,可以將快照中的數(shù)據(jù)大容量復(fù)制到數(shù)據(jù)庫中,然后手動將數(shù)據(jù)合并回數(shù)據(jù)庫中。 但是只要存在數(shù)據(jù)庫快照,快照的源數(shù)據(jù)庫就存在以下限制:<!--[if !supportLists]-->必須在與源數(shù)據(jù)庫相同的服務(wù)器實例上創(chuàng)建數(shù)據(jù)庫快照。 <!--[if !supportLists]--> <!--[endif]-->數(shù)據(jù)庫快照捕獲開始創(chuàng)建快照的時間點,去掉所有未提交的事務(wù)。未提交的事務(wù)將在創(chuàng)建數(shù)據(jù)庫快照期間回滾,因為數(shù)據(jù)庫引擎 將對快照執(zhí)行恢復(fù)操作(數(shù)據(jù)庫中的事務(wù)不受影響)。 <!--[if !supportLists]-->當(dāng)將源數(shù)據(jù)庫中更新的頁強制壓入快照時,如果快照用盡磁盤空間或者遇到某些錯誤,則該快照將成為可疑快照并且必須將其刪除。有關(guān)詳細(xì)信息,請參閱刪除數(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)詳細(xì)信息,請參閱本主題后面的“含有離線文件組的數(shù)據(jù)庫快照”。 <!--[if !supportLists]-->如果源數(shù)據(jù)庫的狀態(tài)為 RECOVERY_PENDING,可能無法訪問其數(shù)據(jù)庫快照。但是,當(dāng)解決了源數(shù)據(jù)庫的問題之后,快照將再次變成可用快照。 <!--[if !supportLists]-->只讀文件組和壓縮文件組不支持恢復(fù)。嘗試恢復(fù)到這兩類文件組將失敗。有關(guān)恢復(fù)的詳細(xì)信息,請參閱恢復(fù)到數(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-- 恢復(fù)數(shù)據(jù)庫快照RESTORE DATABASE AdventureWorks FROM DATABASE_SNAPSHOT = AdventureWorks_snapshot_0600
GO-- 刪除數(shù)據(jù)庫快照DROP DATABASE AdventureWorks_snapshot_0600
GO
相關(guān)文章:
1. 數(shù)據(jù)庫Oracle9i的企業(yè)管理器簡介2. 如何遠(yuǎn)程調(diào)用ACCESS數(shù)據(jù)庫3. MySQL實現(xiàn)數(shù)據(jù)批量更新功能詳解4. MySql導(dǎo)出后再導(dǎo)入數(shù)據(jù)時出錯問題5. Access數(shù)據(jù)庫安全的幾個問題6. Oracle rac環(huán)境的數(shù)據(jù)庫導(dǎo)入操作步驟7. 巧用SQL語言在ACCESS數(shù)據(jù)庫中批量替換內(nèi)容8. 深入分析MySQL數(shù)據(jù)類型 DECIMAL9. Eclipse與MySQL數(shù)據(jù)庫的連接教程(已實操)10. SQL Server數(shù)據(jù)庫查詢優(yōu)化的常用方法總結(jié)
