SQL Server快照功能以及其查詢操作
文章主要描述的是SQL Server快照以及其查詢的實(shí)際操作步驟的描述,近日再次講到關(guān)于SQL Server 2005數(shù)據(jù)庫(kù)的快照功能。在這篇文章里我們主要是對(duì)其做一個(gè)總結(jié),近日再次講到SQL Server 2005中的數(shù)據(jù)庫(kù)快照功能。
使用場(chǎng)景:
只讀的報(bào)表查詢(可以有多個(gè)版本)
分擔(dān)源數(shù)據(jù)庫(kù)壓力
將數(shù)據(jù)靜止在某個(gè)時(shí)間
對(duì)于人為失誤問(wèn)題的災(zāi)難恢復(fù)
主要限制:
要求企業(yè)版
SQL Server 2005快照與源數(shù)據(jù)庫(kù)必須在一個(gè)服務(wù)器實(shí)例
如果存在多個(gè)快照的話,就不可以使用其中某一個(gè)進(jìn)行還原了
實(shí)驗(yàn)步驟:
1. 創(chuàng)建SQL Server 2005快照
- -- Create Snapshot Template
- USE master
- GO
- -- Drop snapshot database if it already exists
- IF EXISTS (
- SELECT name
- FROM sys.databases
- WHERE name = N'Northwind_20090725'
- )
- DROP DATABASE Northwind_NorthwindTest
- GO
- -- Create the snapshot database
- CREATE DATABASE Northwind_20090725 ON
- ( NAME = Northwind, FILENAME =
- 'E:\Temp\Northwind_20090725.ss' )
- AS SNAPSHOT OF Northwind;
- GO
2. 查詢數(shù)據(jù)庫(kù)快照
- SELECT * FROM Northwind_20090725..Customers
3. 理解數(shù)據(jù)庫(kù)快照查詢的依賴關(guān)系
我們都知道數(shù)據(jù)庫(kù)快照這個(gè)功能最主要的一個(gè)特性就是所謂的"寫(xiě)入時(shí)復(fù)制",也就是說(shuō)快照數(shù)據(jù)庫(kù)最開(kāi)始的時(shí)候并沒(méi)有包含數(shù)據(jù), 只有在源數(shù)據(jù)庫(kù)的數(shù)據(jù)頁(yè)發(fā)生變化的情況下,才會(huì)發(fā)生數(shù)據(jù)復(fù)制.
但是不管數(shù)據(jù)有沒(méi)有從源數(shù)據(jù)庫(kù)復(fù)制到快照數(shù)據(jù)庫(kù),查詢SQL Server 2005快照數(shù)據(jù)庫(kù)都要求源數(shù)據(jù)庫(kù)是在線的
為了做這個(gè)測(cè)試,此時(shí),如果設(shè)置源數(shù)據(jù)庫(kù)的狀態(tài)為脫機(jī),則就無(wú)法完成查詢
- ALTER DATABASE [Northwind] SET OFFLINE
上述的相關(guān)內(nèi)容就是對(duì)SQL Server 2005快照的描述,希望會(huì)給你帶來(lái)一些幫助在此方面。
延伸閱讀
數(shù)據(jù)庫(kù)快照是怎樣工作的
可以使用典型的數(shù)據(jù)庫(kù)命令CREATE DATABASE語(yǔ)句來(lái)生成一個(gè)數(shù)據(jù)庫(kù)快照,在聲明中有一個(gè)源數(shù)據(jù)庫(kù)快照的附加說(shuō)明。當(dāng)快照被建立時(shí),同時(shí)生成一個(gè)稀疏文件。這個(gè)文件(只能使用在NTFS卷中)在初始化的時(shí)候并沒(méi)有磁盤(pán)空間分配給它——盡管你可能在WINDOWS資源管理器中看到了文件的大小,它會(huì)看上去與原始的源數(shù)據(jù)庫(kù)文件的大小相同。對(duì)磁盤(pán)來(lái)說(shuō)其實(shí)這個(gè)文件的大小接近于零。
數(shù)據(jù)庫(kù)快照在初始化時(shí)讀的數(shù)據(jù)文件是來(lái)自于源數(shù)據(jù)庫(kù)的。當(dāng)源數(shù)據(jù)庫(kù)的數(shù)據(jù)發(fā)生變化時(shí),數(shù)據(jù)引擎就會(huì)將原始數(shù)據(jù)從源數(shù)據(jù)庫(kù)拷貝到快照數(shù)據(jù)庫(kù)中。這個(gè)技術(shù)確保快照數(shù)據(jù)庫(kù)只反映快照被執(zhí)行時(shí)數(shù)據(jù)的狀態(tài)。當(dāng)SELECT命令被用來(lái)發(fā)布反對(duì)數(shù)據(jù)庫(kù)快照時(shí),不管數(shù)據(jù)頁(yè)的讀取是否被定位在源數(shù)據(jù)庫(kù)數(shù)據(jù)文件中還是在快照數(shù)據(jù)庫(kù)數(shù)據(jù)文件中都是沒(méi)有鎖被發(fā)布的。因?yàn)樵谥蛔x數(shù)據(jù)庫(kù)快照中是沒(méi)有鎖被發(fā)布,數(shù)據(jù)庫(kù)快照對(duì)于報(bào)表解決方案是一個(gè)重要的解決方案。
【編輯推薦】

















