设为首页收藏本站language 语言切换
查看: 1509|回复: 1
收起左侧

【东方瑞通】如何使用SQL Server数据库快照

[复制链接]
发表于 2015-7-9 09:00:26 | 显示全部楼层 |阅读模式
        
数据库快照是SQL Server2005企业版新增加的功能,一直到现在最新的SQL Server版本仍然支持该技术,今天的主题就是和大家分享数据库快照技术在企业中的应用。
什么是数据库快照?
数据库快照是源数据库的只读静态视图,一个源数据库可以有多个数据库快照,并且可以作为数据库驻留在一个SQL Server实例中。
数据库快照有什么作用?
通过上面的介绍,我们已经对数据库快照有了基本的认识,也就是数据库快照是一个只读的状态,这也就决定了快照的使用场景,那就是用于报表。除此之外,我们还可以把快照中的状态还原到源数据库,这也就有了另外一个使用场景,逻辑错误恢复。
数据库快照如何工作?
比如在12点时为源数据库创建了一个快照,如下图:

                               
登录/注册后可看大图
SQL Server会在实例中创建一个空文件的快照数据库,这个快照数据库也就是源数据库的数据库快照了,它是只读状态,如果要查询这个快照数据库,则是这个源数据库12点时的数据状态,既然是空文件也就是页里没有数据,那是如何查询到数据的呢?这也就是快照数据库有意思的地方,再看下图:

                               
登录/注册后可看大图
通过图例可以清楚的看到,如果要查询这个SQL Serve数据库快照,就会被重定向到源数据库,所以返回的数据是源数据库的数据,这也就是查询到数据的原理,然而这也就有了另一个问题,如果在创建数据库快照后,源数据的原始数据发生了变更,那再查询会是什么数据呢?还是用图例说明问题,看下图:

                               
登录/注册后可看大图
相信有人已经猜到了,既然是快照肯定查询到的是创建快照时间点的数据状态了,原理在图中已经很明白的说明,就是源数据库中的原始数据如果变更,则会把变更前的数据COPY一份写入到对应的数据库快照空白文件页中,这时数据库快照就有了数据,不再全是空白的页了,此时再查询SQL Server数据库快照,查询到的是数据库快照中的数据(也就是原始数据的副本),看似复杂其实很简单,也就是一句话,查询数据库快照查询到的是源数据库创建快照时间点的数据状态。
说了这么多,接下来给大家演示下,如何创建数据库快照、查询数据库快照,以及将数据库快照中的数据还原回源数据库:
第一步:创建数据库快照
在easthome数据库中有一个表t1,表中数据如下:

                               
登录/注册后可看大图
创建数据库快照:

                               
登录/注册后可看大图
创建完成后在左侧的导航窗口可以看到已经创建好的数据库快照。
第二步:查询SQL Server数据库快照

                               
登录/注册后可看大图
可以看到,查询到t1表中的数据是1,这时源数据库中的数据还没有发生变更,是被重定向到了源数据库,如果源数据库原始数据变更,则会被COPY到数据库快照中,查询到的数据还是1,与我们刚才介绍的理论是一样的。
第三步:还原数据库快照
现在我将源数据库easthome中的表t1变更,如下:

                               
登录/注册后可看大图
查询SQL Server数据库快照仍然是1,如下:

                               
登录/注册后可看大图
假设我们的修改是错误的,还可以通过数据库快照还原回原始的数据状态,如下:

                               
登录/注册后可看大图
还原后再查询源数据库Easthome数据库回到了变更前的状态。
好了各位,这就是SQL Server数据库快照技术,大家赶快看看在你的企业中是否可以用上呢!
此文出自东方瑞通王晓哲老师,转载需注明出处。
   

发表于 2015-7-9 11:11:54 | 显示全部楼层
感谢楼主分享!
沙发 2015-7-9 11:11:54 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-1-30 15:56 , Processed in 0.055585 second(s), 11 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表