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일 수 없습니다.

반환된 테이블

세로 막대형 데이터 형식 Description
database_id int 데이터베이스의 ID입니다. null일 수 없습니다.
file_id int 파일의 ID입니다. null일 수 없습니다.
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 볼륨의 총 크기(바이트)입니다. null일 수 없습니다.
available_bytes bigint 볼륨에서 사용 가능한 여유 공간입니다. null일 수 없습니다.
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 볼륨이 현재 읽기 전용으로 표시되어 있는지를 나타냅니다. null일 수 없습니다.
is_compressed tinyint 이 볼륨이 현재 압축되었는지 여부를 나타냅니다. Windows에서는 null일 수 없으며 Linux 운영 체제에서 null을 반환합니다.
incurs_seek_penalty tinyint 이 볼륨을 지원하는 스토리지 유형을 나타냅니다. 가능한 값은 다음과 같습니다.

0: 일반적으로 스토리지 디바이스가 PMM 또는 SSD인 경우 이 볼륨에 대한 검색 페널티 없음

1: 일반적으로 스토리지 디바이스가 HDD인 경우 이 볼륨에 대한 페널티를 구합니다.

2: 볼륨이 UNC 경로 또는 탑재된 공유에 있을 때 스토리지 유형을 확인할 수 없습니다.

NULL: Linux 운영 체제에서 스토리지 유형을 확인할 수 없습니다.

적용 대상: SQL Server(SQL Server 2019(15.x)부터)

보안

사용 권한

VIEW SERVER STATE 권한이 필요합니다.

SQL Server 2022 이상에 대한 권한

서버에 대한 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.name), f.file_id);  

참고 항목

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