sys.dm_os_volume_stats (Transact-SQL)

Se aplica a: SQL Server No compatible Azure SQL Database No se admite Azure Synapse Analytics No compatible con Analytics Platform System (PDW)

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.

Icono de vínculo de temaConvenciones 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.

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

Consulte también

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