数据库快照使用一个或多个“稀疏文件“来存储数据.创建数据库快照期间,可以使用 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_files 或 sys.master_files 中的 size 列反映了快照曾经使用过的最大空间(SQL 页数);此值相当于 Windows 的“大小“字段,不同的是此值以文件中包含的 SQL 页数表示;大小(以字节为单位)为🙁页数 * 8192)