旗標知識網 Banner Advertisement
     
 
Microsoft SQL Server 2005 管理實務
Microsoft SQL Server 2005 管理實務

作者:施威銘研究室著
書號:F6222
附件:無附光碟片
定價:680 元
 
 
 
 
 
 
 
使用快照集 (Snapshot) 備份資料庫內容

使用快照集 (Snapshot) 備份資料庫內容

快照集 (Snapshot) 是 SQL Server 2005 新增的功能, 其功能顧名思義, 就是為資料庫拍下目前的 『照片』, 如果在不同的時間建立快照集, 這些快照集便代表資料庫在當時的 『樣子』。所以您可以從各時間的快照集中, 取得資料庫在某個時間點的內容。

快照集的功能只能在企業版、Developer 版、評估版上面使用。

快照集的運作原理

快照集可以拍下資料庫在某個時間點的 『樣子』, 一般人可能會以為快照集就是建立一份資料庫的複製, 這樣的方式雖然能照下資料庫的 『樣子』, 但如果資料庫相當大, 那麼使用複製的方式可就一點都 『快』 不起來了。

快照集使用的是一種稱為 copy-on-write 的技術, 當某資料庫在 A 時間點建立快照集時, SQL Server 會先為該資料庫建立稀疏檔案 (Sparse File, 稍後會說明)。假設 A 時間點之後, 資料庫某頁 (例如 Page 2) 的內容將發生第一次更動, SQL Server 便會先將該頁的資料複製一份到稀疏檔案, 然後才會將更動的內容寫入該頁。以下是快照集的運作示意圖:



若此時讀取快照集, SQL Server 會從快照集稀疏檔案內讀取 Page 2, 但其他資料頁仍從資料庫內讀取, 如此便可以組合成資料庫於 A 時間點的資料。而為了永遠保留 A 時間點的資料, 所以之後 Page 2 再有所更動時, 就不會再次複製內容到稀疏檔案。

資料庫中的其他資料頁有所更動時, 也是使用上述方式複製到稀疏檔案。由於更動資料頁前必須先複製一份到稀疏檔案, 因此快照集對於資料庫寫入的效率會有些許的影響。

快照集中扮演重要角色的稀疏檔案是一種特殊的檔案, 只能建立於 NTFS 檔案系統, 其在檔案總管中看到的大小會等於該資料庫檔案的大小, 但是一開始稀疏檔案內容卻是空的, 實際上佔用的硬碟空間也很小:


實際上佔用的硬碟空間只有 192 KB
大小為 180 MB

隨著更動的資料頁越來越多, 稀疏檔案實際使用的磁碟空間也會跟著越來越大, 一直到等於資料庫檔案大小為止 (代表所有資料頁都已更動過)。所以請小心, 稀疏檔案所在的磁碟務必要保留足夠空間以供其成長, 否則若空間不足, 該快照集將無法繼續運作。

快照集的用途

一般而言, 快照集的用途如下:
產生歷程記錄:如果您需要維持一份定期的資料報表, 例如每一季的財務報表、各年度的預算執行表, 那麼便可以使用快照集功能, 在每一期期末建立一份資料庫的快照集, 那麼當未來需要取得某一期的資料時, 雖然資料庫已經改變了, 但是仍可以從那時候建立的快照集獲得當時的資料。

保護資料以防疏失:當管理者想要進行大幅度更動之前, 或是擔心使用者操作錯誤, 誤改資料內容, 可以先使用快照集保存資料庫當時的內容, 如此日後資料庫的內容有問題時, 便可以使用快照集回復原本的資料。
請注意, 因為快照集並不是資料庫的完整副本, 快照集內只儲存了有差異的資料, 仍然需要配合資料庫才能組合成完整的資料。如果您的資料庫檔案已經完全毀損, 便無法使用快照集進行還原, 所以建議您絕對不要使用快照集做為 『資料庫毀損時可還原的備份』。快照集所能提供的備份功能, 只有上面所說的 『防止操作疏失時可回復資料庫內容的備份』。

為資料庫建立快照集
目前建立快照集只能使用 T-SQL 語法, 無法使用圖形管理工具建立快照集。建立快照集的語法如下:

CREATE DATABASE 快照集名稱 ON
(
NAME = 資料庫檔案的邏輯名稱,
FILENAME = '快照集稀疏檔案的路徑與名稱'
) [ ,...n ]
AS SNAPSHOT OF 資料庫名稱


語法相當簡單, 不過請注意以下各點:
1.快照集名稱與資料庫名稱不能重複。
2.NAME 參數應該使用資料庫檔案的邏輯名稱, 也就是從 Management Studio 中開啟資料庫的屬性交談窗時, 在檔案頁次內的邏輯名稱欄看到的名稱, 而非檔案實際在磁碟上的檔名。
3.若資料庫內有多個資料檔案, 建立快照集時必須為每個資料檔案指定一個稀疏檔案, 但是記錄檔皆不需指定稀疏檔案。
4.稀疏檔案只能建立於 NTFS 檔案系統, 所以請注意, FILENAME 指定的路徑務必位於使用 NTFS 的磁碟中。

例如要為 MyDataBase 資料庫建立快照集, 可使用下面的語法:

CREATE DATABASE MyDataBase_060209 ON
( NAME = MyDataBase,
FILENAME ='C:\MyDataBase_060209.ss' )
AS SNAPSHOT OF MyDataBase
GO

當資料庫內包含多個資料檔案, 應該如下建立快照集:

CREATE DATABASE FlagDataBase_060209 ON
( NAME = FlagDataBase,
FILENAME ='C:\FlagDataBase_060209.ss'),
( NAME = FlagDataBase2,
FILENAME ='C:\FlagDataBase2_060209.ss')
AS SNAPSHOT OF FlagDataBase
GO

快照集名稱、快照集稀疏檔案名稱與其副檔名並沒有特殊限制, 不過一般都會加上日期或時間, 以供識別是何時建立的快照集, 就像我們拍照時, 照相機也會在照片上加入日期時間是一樣的道理。

快照集建立完成後, 便可以在 Management Studio 中看到剛才建立的快照集:


1 展開資料庫/資料庫快照集
2 這是剛剛建立的快照集


檢視快照集的內容

除了不能刪除與變更內容外, 快照集與資料庫的操作方式完全一樣, 例如筆者要檢視 MyDataBase_060209 快照集內的通訊錄資料表, 可如下操作:


展開至快照集內的資料表, 在想要檢視的資料表上按右鈕, 執行開啟資料表命令



可以在此窗格檢視資料表的內容

如果使用 T-SQL 語法, 也是使用與檢視一般資料庫相同的方式即可檢視快照集的內容:

USE MyDataBase_060209
SELECT * from 通訊錄
GO


刪除快照集

與刪除資料庫相同, 如果要刪除快照集, 只要在 Management Studio 的物件總管中選擇快照集, 按滑鼠右鈕執行刪除命令, 或是直接按鍵盤上的 鍵即可。或者也可以使用下面 SQL 語法刪除快照集:

DROP DATABASE MyDataBase_060209
GO

卸離資料庫前, 如果該資料庫有快照集, 必須先將其快照集全部刪除, 否則將無法進行卸離的工作。

 
Down Logo 旗 標 科 技 股 份 有 限 公 司   100 台北市中正區杭州南路一段15-1號19樓 TEL: 02-2396-3257
Copyright © 2005 Flag Publishing Co.,Ltd. All Rights Reserved    版權所有聯絡我們合作提案隱私權政策
 
現在購買《DSLR 完全探索》《數位相片編修聖經》《數位列印/輸出聖經》《數位相機Raw檔聖經》四書,超值優惠2299元 下載訂購單