数据库快照的限制和要求

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

重要说明重要提示

只有 Microsoft SQL Server 2005 Enterprise Edition 和更高版本才提供数据库快照功能。

源数据库存在的限制

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

  • 不能对数据库进行删除、分离或还原。有关如何删除快照的信息,请参阅删除数据库快照

    注意注意

    可以备份源数据库,这方面将不受数据库快照的影响。

  • 源数据库的性能受到影响。由于每次更新页时都会对快照执行“写入时复制”操作,导致源数据库上的 I/O 增加。

  • 不能从源数据库或任何快照中删除文件。

  • 源数据库必须处于联机状态,除非该数据库在数据库镜像会话中是镜像数据库。

    注意注意

    所有恢复模式都支持数据库快照。

  • 不能将源数据库配置为可缩放共享数据库。

  • 若要在镜像数据库中创建数据库快照,数据库必须处于同步镜像状态。

数据库快照的限制

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

  • 数据库快照必须与源数据库在相同的服务器实例上创建和保留。

  • 始终对整个数据库拍摄数据库快照。

  • 数据库快照与源数据库相关。因此,使用数据库快照还原数据库不能代替备份和还原策略。严格按计划执行备份仍然至关重要。如果必须将源数据库还原到创建数据库快照的时间点,请实施允许您执行该操作的备份策略。

  • 当将源数据库中更新的页强制压入快照时,如果快照用尽磁盘空间或者遇到其他错误,则该快照将成为可疑快照并且必须将其删除。

  • 快照为只读。

  • 禁止对 model 数据库、master 数据库和 tempdb 数据库创建快照。

  • 不能更改数据库快照文件的任何规范。

  • 不能从数据库快照中删除文件。

  • 不能备份或还原数据库快照。

  • 不能附加或分离数据库快照。

  • 不能在 FAT32 文件系统或 RAW 分区上创建数据库快照。数据库快照所用的稀疏文件由 NTFS 文件系统提供。

  • 数据库快照不支持全文索引。不从源数据库传播全文目录。

  • 数据库快照将继承快照创建时其源数据库的安全约束。由于快照是只读的,因此无法更改继承的权限,对源数据库的更改权限将不反映在现有快照中。

  • 快照始终反映创建该快照时的文件组状态:联机文件组将保持联机状态,脱机文件组将保持脱机状态。有关详细信息,请参阅本主题后面的“含有脱机文件组的数据库快照”。

  • 如果源数据库的状态为 RECOVERY_PENDING,可能无法访问其数据库快照。但是,当解决了源数据库的问题之后,快照将再次变成可用快照。

  • 只读文件组和压缩文件组不支持恢复操作。尝试恢复包含下列任意一种文件组的数据库将失败。有关恢复的详细信息,请参阅恢复到数据库快照

  • 在日志传送配置中,只能针对主数据库,而不能针对辅助数据库创建数据库快照。如果您在主服务器实例和辅助服务器实例之间切换角色,则在将主数据库设置为辅助数据库之前,必须先删除所有数据库快照。

  • 不能将数据库快照配置为可缩放共享数据库。

  • 数据库快照不支持 FILESTREAM 文件组。如果源数据库中存在 FILESTREAM 文件组,则它们在数据库快照中被标识为脱机状态,且其数据库快照不能用于恢复数据库。

    注意注意

    对数据库快照执行的 SELECT 语句不能指定 FILESTREAM 列;否则,将返回如下错误消息:由于数据移动,无法继续以 NOLOCK 方式扫描。

磁盘空间要求

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

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

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

注意注意

除文件空间外,数据库快照与数据库占用的资源量大致相同。

含有脱机文件组的数据库快照

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

  • 创建快照

    当源数据库具有一个或多个脱机文件组时,快照创建只有在文件组处于脱机状态时才能成功。不能为脱机文件组创建稀疏文件。

    注意注意

    有关数据库快照稀疏文件的角色的信息,请参阅数据库快照的工作方式

  • 使文件组脱机

    可以在源数据库中使文件脱机。但是,如果创建快照时文件组处于联机状态,则该文件组在数据库快照中仍将保持联机状态。如果查询的数据在快照创建后已更改,则在快照中可以访问原始数据页。但是,使用快照访问文件组中未修改数据的查询可能会由于出现输入/输出 (I/O) 错误而失败。

  • 使文件组联机

    只要数据库具有任何快照,就不能使其中的文件组联机。如果在创建快照时文件组处于脱机状态,或当数据库快照存在时使文件组脱机,则文件组将保持脱机状态。这是因为使文件重新联机需要还原该文件,而如果数据库已具有快照,则无法执行此操作。

  • 将源数据库恢复到快照

    将源数据库恢复到数据库快照要求除创建快照时处于脱机状态的文件组外,所有文件组都要处于联机状态。