sys.dm_os_volume_stats (Transact-SQL)

适用于:SQL Server

返回有关操作系统卷的信息, (目录) 指定数据库和文件存储在SQL Server中。 通过使用此动态管理函数,可以检查物理磁盘驱动器的属性,或返回有关目录的可用空间的信息。

Transact-SQL 语法约定

语法

sys.dm_os_volume_stats (database_id, file_id)  

参数

database_id
数据库 ID。 database_id 的数据类型为 int,无默认值。 不能为 NULL。

file_id
文件的 ID。 file_idint,无默认值。 不能为 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 (

安全性

权限

需要 VIEW SERVER STATE 权限。

SQL Server 2022 及更高版本的权限

需要对服务器具有 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.name), f.file_id);  

另请参阅

sys.master_files (Transact-SQL)
sys.database_files (Transact-SQL)