다음을 통해 공유


sys.dm_os_volume_stats(Transact-SQL)

적용 대상:SQL Server

지정된 데이터베이스와 파일이 SQL Server에 저장되는 운영 체제 볼륨(디렉터리)에 대한 정보를 반환합니다. 이 동적 관리 함수를 사용하여 실제 디스크 드라이브의 특성을 확인하거나 디렉터리에 대한 사용 가능한 여유 공간 정보를 반환합니다.

Transact-SQL 구문 표기 규칙

구문

sys.dm_os_volume_stats (database_id , file_id)

인수

database_id

데이터베이스의 ID입니다. database_idint이며 기본값은 없습니다. NULL수 없습니다.

file_id

파일의 ID입니다. file_id 기본값이 없는 int입니다. NULL수 없습니다.

반환된 테이블

데이터 형식 묘사
database_id int 데이터베이스의 ID입니다. nullable이 아닙니다.
file_id int 파일의 ID입니다. nullable이 아닙니다.
volume_mount_point nvarchar(512) 해당 볼륨이 루트 경로로 지정된 탑재 지점입니다. 빈 문자열을 반환할 수 있습니다. Linux에서 null을 반환합니다.
volume_id nvarchar(512) 운영 체제 볼륨 ID입니다. 빈 문자열을 반환할 수 있습니다. Linux에서 null을 반환합니다.
logical_volume_name nvarchar(512) 논리적 볼륨 이름입니다. 빈 문자열을 반환할 수 있습니다. Linux에서 null을 반환합니다.
file_system_type nvarchar(512) 파일 시스템 볼륨의 형식(예: NTFS, FAT, RAW)입니다. 빈 문자열을 반환할 수 있습니다. Linux에서 null을 반환합니다.
total_bytes bigint 볼륨의 총 크기(바이트)입니다. nullable이 아닙니다.
available_bytes bigint 볼륨에서 사용 가능한 여유 공간입니다. nullable이 아닙니다.
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 볼륨이 현재 읽기 전용으로 표시되어 있는지를 나타냅니다. nullable이 아닙니다.
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) 이상 버전

사용 권한

SQL Server 2019(15.x) 및 이전 버전에는 서버에 대한 VIEW SERVER STATE 권한이 필요합니다.

SQL Server 2022(16.x) 이상 버전에는 서버에 대한 VIEW SERVER PERFORMANCE STATE 권한이 필요합니다.

예제

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