日期:2014-05-18  浏览次数:20389 次

【达人解释】何为sql2005的数据库快照
在查找   Sql2000   和   Sql2005区别是搜索到了这段代码

====================================================================
数据库快照
原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!
例子:
CREATE   DATABASE   demo2
GO
USE   demo2
ALTER   DATABASE   demo2   SET   allow_snapshot_isolation   ON   --启动快照功能
CREATE   TABLE   test
(  
tid   INT   NOT   NULL   primary   key,
tname   VARCHAR(50)   NOT   NULL
)
INSERT   INTO   test   VALUES(1, 'version1 ')
INSERT   INTO   test   VALUES(2, 'version2 ')

--连接一

USE   demo2
BEGIN   TRAN
UPDATE   test   SET   tname= 'version3 '   WHERE   tid=2
SELECT   *   FROM   test

--连接二
USE   demo2
SET   transaction   isolation   level   snapshot
SELECT   *   FROM   test
=======================================================================
不知道这个是干什么的,以及下面的测试sql什么意思?

------解决方案--------------------
本主题介绍了 Microsoft SQL Server 2005 中的新增功能:数据库快照。只有 Microsoft SQL Server 2005 的 Enterprise Edition 提供数据库快照功能。所有恢复模式都支持数据库快照。

数据库快照是数据库(源数据库)的只读、静态视图。多个快照可以位于一个源数据库中,并且可以作为数据库始终驻留在同一服务器实例上。创建快照时,每个数据库快照在事务上与源数据库一致。在被数据库所有者显式删除之前,快照始终存在。

与用户数据库的默认行为不同,数据库快照是通过将 ALLOW_SNAPSHOT_ISOLATION 数据库选项设置为 ON 而创建的,不需要考虑主数据库或模型系统数据库中该选项的设置。

快照可用于报表。另外,如果源数据库出现用户错误,还可将源数据库恢复到创建快照时的状态。丢失的数据仅限于创建快照后数据库更新的数据。