对数据库快照的限制

更新日期: 2006 年 12 月 12 日

数据库快照捕获开始创建快照的时间点,去掉所有未提交的事务。使用数据库快照之前,应了解数据库快照对源数据库和系统环境的影响,以及快照本身存在哪些限制。

ms189940.note(zh-cn,SQL.90).gif重要提示:
只有 Microsoft SQL Server 2005 Enterprise Edition 提供数据库快照功能。

源数据库存在的限制

只要存在数据库快照,快照的源数据库就存在以下限制:

  • 不能对数据库进行删除、分离或还原。有关如何删除快照的信息,请参阅删除数据库快照
    ms189940.note(zh-cn,SQL.90).gif注意:
    可以备份源数据库,这方面将不受数据库快照的影响。
  • 源数据库的性能受到影响。由于每次更新页时都会对快照执行“写入时复制”操作,导致源数据库上的 I/O 增加。
  • 不能从源数据库或任何快照中删除文件。
  • 源数据库必须处于在线状态,除非该数据库在数据库镜像会话中是镜像数据库。
    ms189940.note(zh-cn,SQL.90).gif注意:
    所有恢复模式都支持数据库快照。
  • 不能将源数据库配置为可缩放共享数据库。
  • 若要在镜像数据库中创建数据库快照,数据库必须处于同步镜像状态。

数据库快照的限制

数据库快照存在以下限制:

  • 数据库快照必须与源数据库在相同的服务器实例上创建和保留。
  • 始终对整个数据库拍摄数据库快照。
  • 由于数据库快照不是冗余存储,因此,它们不会防止磁盘出现错误或其他类型的损坏。为了保护数据库,非常有必要定期执行备份并测试还原计划。如果必须将源数据库还原到创建数据库快照的时间点,请实施允许您执行该操作的备份策略。
  • 当将源数据库中更新的页强制压入快照时,如果快照用尽磁盘空间或者遇到其他错误,则该快照将成为可疑快照并且必须将其删除。
  • 快照为只读。
  • 禁止对 model 数据库、master 数据库和 tempdb 数据库创建快照。
  • 不能更改数据库快照文件的任何规范。
  • 不能从数据库快照中删除文件。
  • 不能备份或还原数据库快照。
  • 不能附加或分离数据库快照。
  • 不能在 FAT32 文件系统或 RAW 分区上创建数据库快照。数据库快照所用的稀疏文件由 NTFS 文件系统提供。
  • 数据库快照不支持全文索引。不从源数据库传播全文目录。
  • 数据库快照将继承快照创建时其源数据库的安全约束。由于快照是只读的,因此无法更改继承的权限,对源数据库的更改权限将不反映在现有快照中。
  • 快照始终反映创建该快照时的文件组状态:在线文件组将保持在线状态,离线文件组将保持离线状态。有关详细信息,请参阅本主题后面的“含有离线文件组的数据库快照”。
  • 如果源数据库的状态为 RECOVERY_PENDING,可能无法访问其数据库快照。但是,当解决了源数据库的问题之后,快照将再次变成可用快照。
  • 只读文件组和压缩文件组不支持恢复操作。尝试恢复包含下列任意一种文件组的数据库将失败。有关恢复的详细信息,请参阅恢复到数据库快照
  • 在日志传送配置中,只能针对主数据库,而不能针对辅助数据库创建数据库快照。如果您在主服务器实例和辅助服务器实例之间切换角色,则在将主数据库设置为辅助数据库之前,必须先删除所有数据库快照。
  • 不能将快照配置为可缩放共享数据库。

磁盘空间要求

数据库快照占用磁盘空间。如果数据库快照用尽了磁盘空间,将被标记为可疑,必须将其删除。(但是,源数据库不会受到影响,对其执行的操作仍能继续正常进行。)然而,与一份完整的数据库相比,快照具有高度空间有效性。快照仅需足够存储空间来存储在其生存期中更改的页。通常情况下,快照只会保留一段有限的时间,因此其大小不是主要问题。

但是,保留快照的时间越长,越有可能将可用空间用完。稀疏文件最大只能增长到创建快照时相应的源数据库文件的大小。有关详细信息,请参阅了解数据库快照中的稀疏文件大小

如果数据库快照用完了磁盘空间,则必须删除该快照。有关删除数据库快照的信息,请参阅删除数据库快照

ms189940.note(zh-cn,SQL.90).gif注意:
除文件空间外,数据库快照与数据库占用的资源量大致相同。

含有离线文件组的数据库快照

当您尝试执行下列任何操作时,源数据库中的离线文件组都将影响数据库快照:

  • 创建快照
    当源数据库具有一个或多个离线文件组时,快照创建只有在文件组处于离线状态时才能成功。不能为离线文件组创建稀疏文件。
    ms189940.note(zh-cn,SQL.90).gif注意:
    有关数据库快照稀疏文件的角色的信息,请参阅数据库快照的工作方式
  • 使文件组离线
    可以在源数据库中使文件离线。但是,如果创建快照时文件组处于在线状态,则该文件组在数据库快照中仍将保持在线状态。如果查询的数据在快照创建后已更改,则在快照中可以访问原始数据页。但是,使用快照访问文件组中未修改数据的查询可能会由于出现输入/输出 (I/O) 错误而失败。
  • 使文件组在线
    只要数据库具有任何快照,就不能使其中的文件组在线。如果在创建快照时文件组处于离线状态,或当数据库快照存在时使文件组离线,则文件组将保持离线状态。这是因为使文件重新在线需要还原该文件,而如果数据库已具有快照,则无法执行此操作。
  • 将源数据库恢复到快照
    将源数据库恢复到数据库快照要求除创建快照时处于离线状态的文件组外,所有文件组都要处于在线状态。

请参阅

概念

创建数据库快照
数据库快照
删除数据库快照

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 12 月 12 日

新增内容:
  • 更新了“数据库快照的限制”部分,以说明由于数据库快照依赖于源数据库,因此严格按计划执行备份仍然至关重要。

2006 年 4 月 14 日

新增内容:
  • 添加了可缩放共享数据库不支持数据库快照。
  • 添加了若要在镜像数据库中创建数据库快照,数据库必须处于同步镜像状态。

2005 年 12 月 5 日

新增内容:
  • 添加了有关将数据库快照用于日志传送的限制。
  • 添加了有关资源占用的注释。
更改的内容:
  • 更正了技术错误,并阐明以下事实:当存在数据库快照时,不能使文件组在线。