数据库快照
数据库快照是什么
数据库快照提供源数据库在创建快照时的只读、静态视图,不包含未提交的事务。由于 数据库引擎 在创建快照后运行恢复,因此未提交的事务在新近创建的数据库快照中回滚(数据库中的事务不受影响)。
在创建时,每个数据库快照在事务上都与源数据库一致。在创建数据库快照时,源数据库通常会有打开的事务。在快照可以使用之前,打开的事务会回滚以使数据库快照在事务上取得一致。
客户端可以查询数据库快照,这对于基于创建快照时的数据编写报表是很有用的。而且,如果以后源数据库损坏了,便可以将源数据库恢复到它在创建快照时的状态。
创建数据库快照的原因包括:
由于数据库快照可提供数据库的静态视图,因而可以通过快照访问特定时间点的数据。例如,您可以在给定时间段(例如,财务季度)要结束的时候创建数据库快照以便日后制作报表。然后便可以在快照上运行期间要结束时创建的报表。如果磁盘空间允许,还可以维护任意多个不同期间要结束时的快照,以便能够对这些时间段的结果进行查询。例如,调查单位性能。
使用带有数据库镜像的数据库快照,使您能够访问镜像服务器上的数据以生成报表。而且,在镜像数据库上运行查询可以释放主体数据库上的资源。有关详细信息,请参阅数据库镜像和数据库快照。
在进行重大更新之前(例如,大容量更新),可创建数据库快照以保护数据。一旦进行了错误操作,可以使用快照将数据库恢复到生成快照时的状态。采用此方法还原很可能比从备份还原快得多;但是,此后您无法对数据进行前滚操作。
有关详细信息,请参阅恢复到数据库快照。
定期创建数据库快照,可以减轻重大用户错误(例如,删除的表)的影响。为了很好地保护数据,可以创建时间跨度足以识别和处理大多数用户错误的一系列数据库快照。例如,根据磁盘资源,可以每 24 小时创建 6 到 12 个滚动快照。每创建一个新的快照,就删除最早的快照。
- 若要从用户错误中恢复,可以将数据库恢复到在错误发生的前一时刻的快照。采用此方法还原很可能比从备份还原快得多;但是,此后您无法对数据进行前滚操作。
有关恢复快照的详细信息,请参阅恢复到数据库快照。 - 或者,也可以利用快照中的信息,手动重新创建删除的表或其他丢失的数据。例如,可以将快照中的数据大容量复制到数据库中,然后手动将数据合并回数据库中。
在测试环境中,当每一轮测试开始时针对要包含相同数据的数据库重复运行测试协议将十分有用。在运行第一轮测试前,应用程序开发人员或测试人员可以在测试数据库中创建数据库快照。每次运行测试之后,数据库都可以通过还原数据库快照快速返回到它以前的状态。