Compartir a través de


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 se puede NULL.

file_id

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

Tabla devuelta

Columna Tipo de dato Descripción
database_id int Identificador de la base de datos. No acepta valores NULL.
file_id int Id. del archivo. No acepta valores 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 Linux.
volume_id nvarchar(512) Identificador del 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 de sistema de archivos (por ejemplo NTFS, FAT, RAW). Puede devolver una cadena vacía. Devuelve null en Linux.
total_bytes bigint Tamaño total del volumen en bytes. No acepta valores NULL.
available_bytes bigint Espacio disponible del volumen. No acepta valores NULL.
supports_compression tinyint Indica si el volumen admite la compresión del sistema operativo. No acepta valores NULL en Windows y devuelve NULL en Linux.
supports_alternate_streams tinyint Indica si el volumen admite flujos alternativos. No acepta valores NULL en Windows y devuelve NULL en Linux.
supports_sparse_files tinyint Indica si el volumen admite archivos dispersos. No acepta valores NULL en Windows y devuelve NULL en Linux.
is_read_only tinyint Indica si el volumen está marcado actualmente como de solo lectura. No acepta valores NULL.
is_compressed tinyint Indica si el volumen está comprimido actualmente. No acepta valores NULL en Windows y devuelve NULL en 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: busque penalización en este volumen, normalmente cuando el dispositivo de almacenamiento sea 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 2019 (15.x) y versiones posteriores

Permisos

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.

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