如何使用SQL Server数据库

发布讲师:杨洪海

发布时间:2017年03月10日

浏览量:6842(次)

简介:数据库快照是SQL Server2005企业版新增加的功能,一直到现在最新的SQL Server版本仍然支持该技术,今天的主题就是和大家分享数据库快照技术在企业中的应用。 什么是数据库快照?

数据库快照是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数据库快照技术,大家赶快看看在你的企业中是否可以用上呢!