SQLServer快照功能以及其查询操作

来源:计算机等级考试    发布时间:2012-08-27    计算机等级考试视频    评论

使用场景:

只读的报表查询(可以有多个版本)

分担源数据库压力

将数据静止在某个时间

对于人为失误问题的灾难恢复

主要限制:

要求企业版

SQL Server 2005快照与源数据库必须在一个服务器实例

如果存在多个快照的话,就不可以使用其中某一个进行还原了

实验步骤:

1. 创建SQL Server 2005快照

– Create Snapshot TemplateUSE masterGO– Drop snapshot database if it already existsIF  EXISTS (SELECT nameFROM sys.databasesWHERE name = N’Northwind_20090725′)DROP DATABASE Northwind_NorthwindTestGO– Create the snapshot databaseCREATE DATABASE Northwind_20090725 ON( NAME = Northwind, FILENAME =‘E:/Temp/Northwind_20090725.ss’ )AS SNAPSHOT OF Northwind;GO

2. 查询数据库快照

SELECT * FROM Northwind_20090725..Customers

3. 理解数据库快照查询的依赖关系

我们都知道数据库快照这个功能最主要的一个特性就是所谓的”写入时复制”,也就是说快照数据库最开始的时候并没有包含数据, 只有在源数据库的数据页发生变化的情况下,才会发生数据复制.

但是不管数据有没有从源数据库复制到快照数据库,查询SQL Server 2005快照数据库都要求源数据库是在线的。

为了做这个测试,此时,如果设置源数据库的状态为脱机,则就无法完成查询

ALTER DATABASE [Northwind] SET  OFFLINE

数据库快照是怎样工作的

可以使用典型的数据库命令CREATE DATABASE语句来生成一个数据库快照,在声明中有一个源数据库快照的附加说明。当快照被建立时,同时生成一个稀疏文件。这个文件(只能使用在NTFS卷中)在初始化的时候并没有磁盘空间分配给它——尽管你可能在WINDOWS资源管理器中看到了文件的大小,它会看上去与原始的源数据库文件的大小相同。对磁盘来说其实这个文件的大小接近于零。

数据库快照在初始化时读的数据文件是来自于源数据库的。当源数据库的数据发生变化时,数据引擎就会将原始数据从源数据库拷贝到快照数据库中。这个技术确保快照数据库只反映快照被执行时数据的状态。当SELECT命令被用来发布反对数据库快照时,不管数据页的读取是否被定位在源数据库数据文件中还是在快照数据库数据文件中都是没有锁被发布的。因为在只读数据库快照中是没有锁被发布,数据库快照对于报表解决方案是一个重要的解决方案。

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答