浅谈SQL Server中的快照-2
上一篇 / 下一篇 2012-06-29 13:51:08 / 个人分类:数据库
使用快照存在诸多限制,由于列表太长,我只概括的说一下主要限制。
u3N^Bea#oK0q8F b(b:@0 ● 当使用快照恢复数据库时,首先要删除其他快照51Testing软件测试网P$G3Z4k)v$\S
T"ba9e)Q4OK0 ● 快照在创建时的时间点上没有commit的数据不会被记入快照51Testing软件测试网E)d?} x8?5d*Rt
m'}m,[KiF0 ● 快照是快照整个数据库,而不是数据库的某一部分
5cu*e0u,kQj0*V0l)pXS5N0 ● 快照是只读的,意思是不能在快照上加任何更改,即使是你想加一个让报表跑得更快的索引51Testing软件测试网:J p+b$x[qs6I
51Testing软件测试网 O4Swk^,qJ^● 在利用快照恢复数据库时,快照和源数据库都不可用51Testing软件测试网9OQn_8t)p
51Testing软件测试网N}+x(O$h3? i● 快照和源数据必须在同一个实例上
,G|3J }7zp/on4I01j|'P$D FZ0 ● 快照数据库的文件必须在NTFS格式的盘上51Testing软件测试网!v;ZMk md,Ka;T
51Testing软件测试网7b!Ney5f● 当磁盘不能满足快照的增长时,快照数据库会被置为suspect状态51Testing软件测试网$EbuQk5U#f
H Tc0~9~+I0 ● 快照上不能存在全文索引51Testing软件测试网,Oj$rZ$B w`
51Testing软件测试网.w^y"Bo6L G*V&p其实,虽然限制看上去很多,但只要明白快照的原理,自然能推测出快照应该有的限制。
!DVt'L9@QD M051Testing软件测试网iS` `5g9NV4j快照的创建和使用
t,p*Q7yCP.R H0*O)Rg\c-k4mz0 无论是使用SSMS或是命令行,快照只能通过T-SQL语句创建。在创建数据库之前,首先要知道数据库分布在几个文件上,因为快照需要对每一个文件进行copy-on-writing。如图6所示。
V`M5kZ8B/Q6R^051Testing软件测试网m1T:~*d g@0O1m*p2R
图6.首先查出数据库的文件分布51Testing软件测试网]b Ac,nh
根据图6的数据库分布,我们通过T-SQL创建快照,如图7所示。51Testing软件测试网3U,AilO[)Zc-]
8Lhi!W/u*^7|0图7,根据图6的数据库信息创建一个数据库快照51Testing软件测试网C3n7\KM\
当快照数据库创建成功后,就可以像使用普通数据库一样使用快照数据库了,如图8所示。
S7N&f1`*uD1y(K0图8.快照数据库和普通数据库一样使用51Testing软件测试网8i)o4QrD w
通过如下语句可以看到,快照数据库文件和源数据库的文件貌似并无区别,仅仅是快照数据库文件是稀疏文件,如图9所示。51Testing软件测试网 ibyv_#fyTR
图9.源数据库和快照数据库
E URbTo0而删除快照数据库和删除普通数据库并无二至,也仅仅是使用DROP语句,如图10所示。51Testing软件测试网.[o$j$R|{o s"A
图10.删除快照数据库
M\.H(O~v#BQ0我们也可以利用快照恢复数据库,这个恢复速度要比普通的备份-恢复来的快得多,这也可以将数据库呈现给测试人员,当测试结束后,恢复数据库到测试之前的状态。如图11所示。51Testing软件测试网/~n~Enz
5]$]#la"I2oY4xc0图11.利用快照恢复数据库51Testing软件测试网(z%|_7z]*K%}Dy
使用快照其他一些需要考虑的因素51Testing软件测试网D `$E O*c!o"lAB&W