sys.dm_os_volume_stats (Transact-SQL)

Se aplica a:SQL Server

Devuelve información sobre el volumen del sistema operativo (directorio) en el que se almacenan las bases de datos y archivos especificados en SQL Server. Utiliza esta función de gestión dinámica para comprobar los atributos de la unidad física de disco o devolver la información disponible en espacio libre sobre el directorio.

Convenciones de sintaxis de Transact-SQL

Syntax

sys.dm_os_volume_stats (database_id , file_id)

Argumentos

database_id

Identificador de la base de datos. database_id es de tipo int y no tiene ningún valor predeterminado. No puede ser NULL.

file_id

Identificador del archivo. file_id es int, sin ningún valor predeterminado. No puede ser NULL.

Tabla devuelta

Columna Tipo de dato Descripción
database_id int Identificador de la base de datos. No es anulable.
file_id int Identificador del archivo. No es anulable.
volume_mount_point nvarchar(512) Punto de montaje en el que el volumen está enraizado. Puede devolver una cadena vacía. Devuelve null en Linux.
volume_id nvarchar(512) ID de volumen del sistema operativo. Puede devolver una cadena vacía. Devuelve null en Linux.
logical_volume_name nvarchar(512) Nombre lógico del volumen. Puede devolver una cadena vacía. Devuelve null en Linux.
file_system_type nvarchar(512) Tipo de volumen del sistema de archivos (por ejemplo, NTFS, FAT, RAW). Puede devolver una cadena vacía. Devuelve null en Linux.
total_bytes bigint Tamaño total en bytes del volumen. No es anulable.
available_bytes bigint Espacio libre disponible en el volumen. No es anulable.
supports_compression tinyint Indica si el volumen soporta compresión del sistema operativo. No es nullable en Windows, y devuelve null en Linux.
supports_alternate_streams tinyint Indica si el volumen soporta corrientes alternativas. No es nullable en Windows, y devuelve null en Linux.
supports_sparse_files tinyint Indica si el volumen soporta archivos dispersos. No es nullable en Windows, y devuelve null en Linux.
is_read_only tinyint Indica si el volumen está actualmente marcado como solo lectura. No es anulable.
is_compressed tinyint Indica si este volumen está actualmente comprimido. No es nullable en Windows, y devuelve null en Linux.
incurs_seek_penalty tinyint Indica el tipo de almacenamiento que soporta este volumen. Los valores posibles son:

0: No hay penalización de búsqueda en este volumen, normalmente cuando el dispositivo de almacenamiento es PMM o SSD

1: Penalización de búsqueda en este volumen, normalmente cuando el dispositivo de almacenamiento es un disco duro

2: El tipo de almacenamiento no puede determinarse cuando el volumen está en una ruta UNC o en acciones montadas

NULL: El tipo de almacenamiento no se puede determinar en el sistema operativo Linux

Se aplica a: SQL Server 2019 (15.x) y versiones posteriores.

Permissions

SQL Server 2019 (15.x) y versiones anteriores requieren VIEW SERVER STATE permiso en el servidor.

SQL Server 2022 (16.x) y versiones posteriores requieren VIEW SERVER PERFORMANCE STATE permiso en el servidor.

Examples

A. Devuelve el espacio total y el espacio disponible para todos los archivos de la base de datos

El siguiente ejemplo devuelve el espacio total y el espacio disponible (en bytes) para todos los archivos de base de datos en la instancia de 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. Devuelve el espacio total y el espacio disponible para la base de datos actual

El siguiente ejemplo devuelve el espacio total y el espacio disponible (en bytes) para los archivos de base de datos en la base de datos actual.

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