【达人解释】何为sql2005的数据库快照

vicky_jam 2007-05-25 10:09:25
在查找 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什么意思?
...全文
346 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2007-05-26
  • 打赏
  • 举报
回复
不知道楼主问的是启动那个快照.

如果是启动 SNAPSHOT 选项, 则是说明在使用 SNAPSHOT 事务隔离级别下, 可以访问事务数据更新前的原始版本

如果是指使用 create database 为数据库创建快照, 则是为数据库创建了一个副本, 这个副本保持创建副本时的状态, 不受数据库中数据变化的影响.


无论那种, 对性能都有影响, 因为它们都要维持一个数据的原始版本.
ankor 2007-05-25
  • 打赏
  • 举报
回复
改天好好看看2005..`
zjcxc 2007-05-25
  • 打赏
  • 举报
回复
具体的信息楼主看sql 2005的联机帮助吧
zjcxc 2007-05-25
  • 打赏
  • 举报
回复
2005 有两个快照的概念
1. 快照事务隔离级别
2. 整个数据库的一个快照(反应数据库在某一时间点的情况的只读副本)
zjcxc 2007-05-25
  • 打赏
  • 举报
回复
楼主的示例演示的是 SNAPSHOT 事务隔离级别

简单地说, 就是在启用了 SNAPSHOT 事务隔离级别后, 可以访问表中数据被其他事务更新前的状态
zjcxc 2007-05-25
  • 打赏
  • 举报
回复
本主题介绍了 Microsoft SQL Server 2005 中的新增功能:数据库快照。只有 Microsoft SQL Server 2005 的 Enterprise Edition 提供数据库快照功能。所有恢复模式都支持数据库快照。

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

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

快照可用于报表。另外,如果源数据库出现用户错误,还可将源数据库恢复到创建快照时的状态。丢失的数据仅限于创建快照后数据库更新的数据。
wgsasd311 2007-05-25
  • 打赏
  • 举报
回复
帮你顶下
vicky_jam 2007-05-25
  • 打赏
  • 举报
回复
zjcxc(邹建) 您好

我看了sql2005联机帮助
里面说的你这种方式创建快照语句是:
CREATE DATABASE AdventureWorks_dbss1800 ON
( NAME = AdventureWorks_Data, FILENAME =
'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_data_1800.ss' )
AS SNAPSHOT OF AdventureWorks;
GO


和我提的问题不是很一致。
我们说的是一个东西么?
yesyesyes 2007-05-25
  • 打赏
  • 举报
回复
例子好像不太对
创建快照要用
AS SNAPSHOT OF db_name子句的吧
vicky_jam 2007-05-25
  • 打赏
  • 举报
回复
谢谢zjcxc(邹建)的回答

我还有个问题。

1。db启动快照功能后,如果执行更新操作,会不会同时更新快照文件么?
我的理解是不会。
不知道是不是这样
2。如果启动快照功能,会不会提高数据库更新操作的效率?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧