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