【东方瑞通】如何使用SQL Server数据库快照
数据库快照是SQL Server2005企业版新增加的功能,一直到现在最新的SQL Server版本仍然支持该技术,今天的主题就是和大家分享数据库快照技术在企业中的应用。什么是数据库快照?数据库快照是源数据库的只读静态视图,一个源数据库可以有多个数据库快照,并且可以作为数据库驻留在一个SQL Server实例中。数据库快照有什么作用?通过上面的介绍,我们已经对数据库快照有了基本的认识,也就是数据库快照是一个只读的状态,这也就决定了快照的使用场景,那就是用于报表。除此之外,我们还可以把快照中的状态还原到源数据库,这也就有了另外一个使用场景,逻辑错误恢复。数据库快照如何工作?比如在12点时为源数据库创建了一个快照,如下图:http://115.28.154.201:1089/Content/ueditor/net/upload/2015-07-09/f141837a-0fdf-4e2d-8021-67c28860cf31.pngSQL Server会在实例中创建一个空文件的快照数据库,这个快照数据库也就是源数据库的数据库快照了,它是只读状态,如果要查询这个快照数据库,则是这个源数据库12点时的数据状态,既然是空文件也就是页里没有数据,那是如何查询到数据的呢?这也就是快照数据库有意思的地方,再看下图:http://115.28.154.201:1089/Content/ueditor/net/upload/2015-07-09/bc260814-8d03-4296-abc3-fffd675b8aa1.png通过图例可以清楚的看到,如果要查询这个SQL Serve数据库快照,就会被重定向到源数据库,所以返回的数据是源数据库的数据,这也就是查询到数据的原理,然而这也就有了另一个问题,如果在创建数据库快照后,源数据的原始数据发生了变更,那再查询会是什么数据呢?还是用图例说明问题,看下图:http://115.28.154.201:1089/Content/ueditor/net/upload/2015-07-09/0c74319a-c338-4a93-afcb-e3dfae267ab6.png相信有人已经猜到了,既然是快照肯定查询到的是创建快照时间点的数据状态了,原理在图中已经很明白的说明,就是源数据库中的原始数据如果变更,则会把变更前的数据COPY一份写入到对应的数据库快照空白文件页中,这时数据库快照就有了数据,不再全是空白的页了,此时再查询SQL Server数据库快照,查询到的是数据库快照中的数据(也就是原始数据的副本),看似复杂其实很简单,也就是一句话,查询数据库快照查询到的是源数据库创建快照时间点的数据状态。说了这么多,接下来给大家演示下,如何创建数据库快照、查询数据库快照,以及将数据库快照中的数据还原回源数据库:第一步:创建数据库快照在easthome数据库中有一个表t1,表中数据如下:http://115.28.154.201:1089/Content/ueditor/net/upload/2015-07-09/2edecbaf-a0bd-416f-91a9-62b09d0b62cd.png创建数据库快照:http://115.28.154.201:1089/Content/ueditor/net/upload/2015-07-09/b78839d4-1e9d-4669-9237-7a3aa415930b.png创建完成后在左侧的导航窗口可以看到已经创建好的数据库快照。第二步:查询SQL Server数据库快照 http://115.28.154.201:1089/Content/ueditor/net/upload/2015-07-09/14e89693-b91d-439e-8610-16329d2f31c9.png可以看到,查询到t1表中的数据是1,这时源数据库中的数据还没有发生变更,是被重定向到了源数据库,如果源数据库原始数据变更,则会被COPY到数据库快照中,查询到的数据还是1,与我们刚才介绍的理论是一样的。第三步:还原数据库快照现在我将源数据库easthome中的表t1变更,如下:http://115.28.154.201:1089/Content/ueditor/net/upload/2015-07-09/e3f90a67-5438-4f8c-875e-18951813d846.png查询SQL Server数据库快照仍然是1,如下:http://115.28.154.201:1089/Content/ueditor/net/upload/2015-07-09/8cd18e27-807d-4561-ab61-fd6aed6d6548.png假设我们的修改是错误的,还可以通过数据库快照还原回原始的数据状态,如下:http://115.28.154.201:1089/Content/ueditor/net/upload/2015-07-09/e28d7f28-e69a-4a0e-87f4-cc81c073dbd2.png还原后再查询源数据库Easthome数据库回到了变更前的状态。好了各位,这就是SQL Server数据库快照技术,大家赶快看看在你的企业中是否可以用上呢!此文出自东方瑞通王晓哲老师,转载需注明出处。感谢楼主分享!
页:
[1]