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 los archivos especificados en SQL Server. Utilice esta función de administración dinámica para comprobar los atributos de la unidad de disco física y obtener información sobre el espacio disponible en el directorio.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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
Id. del archivo. file_id es int, sin ningún valor predeterminado. No puede ser NULL.

Tabla devuelta

Columna Tipo de datos Descripción
database_id int Identificador de la base de datos. No puede ser NULL.
file_id int Id. del archivo. No puede ser NULL.
volume_mount_point nvarchar(512) Punto de montaje en el que el volumen tiene su raíz. Puede devolver una cadena vacía. Devuelve null en el sistema operativo Linux.
volume_id nvarchar(512) Identificador del volumen del sistema operativo. Puede devolver una cadena vacía. Devuelve null en el sistema operativo Linux.
logical_volume_name nvarchar(512) Nombre lógico del volumen. Puede devolver una cadena vacía. Devuelve null en el sistema operativo Linux.
file_system_type nvarchar(512) Tipo de volumen de sistema de archivos (por ejemplo NTFS, FAT, RAW). Puede devolver una cadena vacía. Devuelve null en el sistema operativo Linux.
total_bytes bigint Tamaño total del volumen en bytes. No puede ser NULL.
available_bytes bigint Espacio disponible del volumen. No puede ser NULL.
supports_compression tinyint Indica si el volumen admite la compresión del sistema operativo. No puede ser null en Windows y devuelve null en el sistema operativo Linux.
supports_alternate_streams tinyint Indica si el volumen admite flujos alternativos. No puede ser null en Windows y devuelve null en el sistema operativo Linux.
supports_sparse_files tinyint Indica si el volumen admite archivos dispersos. No puede ser null en Windows y devuelve null en el sistema operativo Linux.
is_read_only tinyint Indica si el volumen está marcado actualmente como de solo lectura. No puede ser NULL.
is_compressed tinyint Indica si el volumen está comprimido actualmente. No puede ser null en Windows y devuelve null en el sistema operativo Linux.
incurs_seek_penalty tinyint Indica el tipo de almacenamiento que admite 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: Buscar penalización en este volumen, normalmente cuando el dispositivo de almacenamiento es HDD

2: El tipo de almacenamiento no se puede determinar cuando el volumen está en una ruta de acceso UNC o recursos compartidos montados

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

Se aplica a: SQL Server (a partir de SQL Server 2019 (15.x))

Seguridad

Permisos

Requiere el permiso VIEW SERVER STATE.

Permisos para SQL Server 2022 y versiones posteriores

Requiere el permiso VIEW SERVER PERFORMANCE STATE en el servidor.

Ejemplos

A. Devolver el espacio total y el espacio disponible de todos los archivos de base de datos

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

El ejemplo siguiente devuelve el espacio total y el espacio disponible (en bytes) de los archivos de base de datos de 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.name), f.file_id);  

Vea también

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