sys.dm_os_volume_stats(Transact-SQL)

适用于:SQL Server

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

Transact-SQL 语法约定

Syntax

sys.dm_os_volume_stats (database_id , file_id)

Arguments

database_id

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

file_id

文件的 ID。 file_id为 int,无默认值。 不能是 NULL

返回的表

数据类型 Description
database_id int 数据库 ID。 不可为 null。
file_id int 文件的 ID。 不可为 null。
volume_mount_point nvarchar(512) 安装卷的根点。 可以返回空字符串。 在Linux上返回空值。
volume_id nvarchar(512) 操作系统卷ID。 可以返回空字符串。 在Linux上返回空值。
logical_volume_name nvarchar(512) 逻辑卷名。 可以返回空字符串。 在Linux上返回空值。
file_system_type nvarchar(512) 文件系统卷的类型(例如,NTFS、FAT、RAW)。 可以返回空字符串。 在Linux上返回空值。
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) 及更高版本

Permissions

SQL Server 2019 (15.x) 和早期版本需要 VIEW SERVER STATE 对服务器具有权限。

SQL Server 2022 (16.x) 及更高版本需要 VIEW SERVER PERFORMANCE STATE 对服务器具有权限。

Examples

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);