了解数据库快照中的稀疏文件大小

数据库快照使用一个或多个“稀疏文件”来存储数据。创建数据库快照期间,可以使用 CREATE DATABASE 语句中的文件名来创建稀疏文件。这些文件名存储在 sys.master_files 中的 physical_name 列中。

注意注意

sys.database_files 中(无论是在源数据库中还是在快照中),physical_name 列中始终包含源数据库文件的名称。

稀疏文件是 NTFS 文件系统的一项功能。最初,稀疏文件不包含用户数据,因为未向其分配磁盘空间用来存储用户数据。有关如何在数据库快照中使用稀疏文件以及如何增长数据库快照的常规信息,请参阅 数据库快照的工作方式

首次创建稀疏文件时,稀疏文件占用的磁盘空间非常少。随着数据写入稀疏文件,NTFS 会逐渐分配磁盘空间。稀疏文件可能会占用非常大的磁盘空间。如果数据库快照用尽了空间,将被标记为可疑,必须将其删除。但是,源数据库不会受到影响;对其执行的操作仍能继续正常进行。

稀疏文件按 64 KB 的增量增长;因此,磁盘上稀疏文件的大小始终是 64 KB 的倍数。根据从源数据库复制的页数,最新增长的 64 KB 可存放一到八个 8 KB 页。这意味着稀疏文件的大小一般来说会稍大于页实际填充的空间。

  • 查看稀疏文件的实际大小

    若要了解快照的每个稀疏文件当前在磁盘上使用的字节数,可以使用 sys.dm_io_virtual_file_stats 动态管理视图的 size_on_disk_bytes 列。

    另外,若要查看稀疏文件占用的磁盘空间,也可以在 Microsoft Windows 中右键单击文件,再单击**“属性”,然后查看“占用空间”**值。

  • 查看稀疏文件的最大大小

    稀疏文件最大只能增长到创建快照时相应的源数据库文件的大小。若要了解此大小,可以使用下列方法之一:

    • 使用 Windows dir 命令。

    • 在 Windows 中,选择稀疏文件,打开文件**“属性”对话框,然后查看“大小”**值。

    • 从数据库快照的 sys.database_files 中或从 sys.master_files 中选择 size 列。sys.database_filessys.master_files 中的 size 列反映了快照曾经使用过的最大空间(SQL 页数);此值相当于 Windows 的**“大小”**字段,不同的是此值以文件中包含的 SQL 页数表示;大小(以字节为单位)为:

      (页数 * 8192)