MSSQL 2005的新功能创建数据库快照

网络整理 - 07-26

客户端可以查询数据库快照,这对于基于创建快照时的数据编写报表是很有用的。而且,如果以后源数据库损坏了,便可以将源数据库恢复到它在创建快照时的状态。

创建数据库快照可以:

  • <!--[if !supportLists]--><!--[endif]-->维护历史数据以生成报表。可以通过快照访问特定时间点的数据。例如,您可以在给定时间段(例如,财务季度)要结束的时候创建数据库快照以便日后制作报表。然后便可以在快照上运行期间要结束时创建的报表。
  • <!--[if !supportLists]-->将查询实施在数据库的快照上,可以释放主体数据库上的资源。
  • <!--[if !supportLists]-->
  • 但是只要存在数据库快照,快照的源数据库就存在以下限制:

  • <!--[if !supportLists]-->必须在与源数据库相同的服务器实例上创建数据库快照。
  • <!--[if !supportLists]--> <!--[endif]-->数据库快照捕获开始创建快照的时间点,去掉所有未提交的事务。未提交的事务将在创建数据库快照期间回滚,因为数据库引擎 将对快照执行恢复操作(数据库中的事务不受影响)。
  • <!--[if !supportLists]-->
  • <!--[if !supportLists]-->快照为只读。
  • <!--[if !supportLists]-->
  • <!--[if !supportLists]--> <!--[endif]-->不能更改数据库快照文件的任何规范。
  • <!--[if !supportLists]--><!--[endif]-->不能从快照中删除文件。
  • <!--[if !supportLists]-->不能备份或还原快照。
  • <!--[if !supportLists]-->不能附加或分离快照。
  • <!--[if !supportLists]-->
  • <!--[if !supportLists]--> <!--[endif]-->数据库快照不支持全文索引,不能从源数据库传播全文目录。
  • <!--[if !supportLists]-->数据库快照将继承快照创建时其源数据库的安全约束。由于快照是只读的,因此无法更改继承的权限,对源数据库的更改权限将不反映在现有快照中。
  • <!--[if !supportLists]-->
  • <!--[if !supportLists]-->
  • <!--[if !supportLists]-->
  • 下面就请看一个简单的例子:

    -- 创建数据库快照

    CREATE DATABASE AdventureWorks_snapshot_0600 ON

    (

    'E:\SQL2005\MSSQL.1\MSSQL\Data\AdventureWorks_snapshot_0600.ss'

    RESTORE DATABASE AdventureWorks FROM DATABASE_SNAPSHOT = AdventureWorks_snapshot_0600

    GO

    -- 删除数据库快照

    DROP DATABASE AdventureWorks_snapshot_0600

    GO