sys.dm_os_volume_stats (Transact-SQL)
适用范围:SQL Server
返回有关指定数据库和文件存储在 SQL Server 中的操作系统卷(目录)的信息。 通过使用此动态管理函数,可以检查物理磁盘驱动器的属性,或返回有关目录的可用空间的信息。
语法
sys.dm_os_volume_stats (database_id , file_id)
参数
database_id
数据库 ID。 database_id 的数据类型为 int,无默认值。 不能 NULL
。
file_id
文件的 ID。
file_id为 int,无默认值。 不能 NULL
。
返回的表
列 | 数据类型 | 描述 |
---|---|---|
database_id |
int | 数据库 ID。 不可为 null。 |
file_id |
int | 文件的 ID。 不可为 null。 |
volume_mount_point |
nvarchar(512) | 根卷上的装入点。 可返回空字符串。 在 Linux 上返回 null。 |
volume_id |
nvarchar(512) | 操作系统卷 ID。 可返回空字符串。 在 Linux 上返回 null。 |
logical_volume_name |
nvarchar(512) | 逻辑卷名称。 可返回空字符串。 在 Linux 上返回 null。 |
file_system_type |
nvarchar(512) | 文件系统卷的类型(例如 NTFS、FAT、RAW)。 可返回空字符串。 在 Linux 上返回 null。 |
total_bytes |
bigint | 卷的总大小(字节)。 不可为 null。 |
available_bytes |
bigint | 卷上的可用空间。 不可为 null。 |
supports_compression |
tinyint | 指示卷是否支持操作系统压缩。 在 Windows 上不可为 null,在 Linux 上返回 null。 |
supports_alternate_streams |
tinyint | 指示卷是否支持备用流。 在 Windows 上不可为 null,在 Linux 上返回 null。 |
supports_sparse_files |
tinyint | 指示卷是否支持稀疏文件。 在 Windows 上不可为 null,在 Linux 上返回 null。 |
is_read_only |
tinyint | 指示卷当前是否标记为只读。 不可为 null。 |
is_compressed |
tinyint | 指示此卷当前是否已压缩。 在 Windows 上不可为 null,在 Linux 上返回 null。 |
incurs_seek_penalty |
tinyint | 指示支持此卷的存储类型。 可能的值为:0 :通常,当存储设备为 PMM 或 SSD 时,不会对此卷造成任何惩罚1 :查找此卷上的处罚,通常是当存储设备为 HDD 时2 :当卷位于 UNC 路径或装载的共享上时,无法确定存储类型NULL :无法在 Linux 操作系统上确定存储类型适用于: SQL Server 2019 (15.x) 及更高版本 |
权限
SQL Server 2019 (15.x) 和早期版本需要对服务器具有 VIEW SERVER STATE
权限。
SQL Server 2022 (16.x) 及更高版本需要对服务器具有 VIEW SERVER PERFORMANCE STATE
权限。
示例
A. 返回所有数据库文件的总空间和可用空间
以下示例返回 SQL Server 实例中所有数据库文件的总空间和可用空间(以字节为单位)。
SELECT f.database_id,
f.file_id,
volume_mount_point,
total_bytes,
available_bytes
FROM sys.master_files AS f
CROSS APPLY sys.dm_os_volume_stats(f.database_id, f.file_id);
B. 返回当前数据库的总空间和可用空间
下面的示例返回当前数据库中数据库文件的总空间和可用空间(字节)。
SELECT database_id,
f.file_id,
volume_mount_point,
total_bytes,
available_bytes
FROM sys.database_files AS f
CROSS APPLY sys.dm_os_volume_stats(DB_ID(), f.file_id);