sys.dm_os_threads (Transact-SQL)
적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)
SQL Server 프로세스에서 실행 중인 모든 SQL Server 운영 체제 스레드 목록을 반환합니다.
참고 항목
Azure Synapse Analytics 또는 PDW(Analytics Platform System)에서 이를 호출하려면 이름 sys.dm_pdw_nodes_os_threads 사용합니다. 이 구문은 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
thread_address | varbinary(8) | 스레드의 메모리 주소(기본 키)입니다. |
started_by_sqlservr | bit | 스레드 초기자를 나타냅니다. 1 = SQL Server가 스레드를 시작했습니다. 0 = SQL Server 내에서 확장 저장 프로시저와 같은 다른 구성 요소가 스레드를 시작했습니다. |
os_thread_id | int | 운영 체제에서 할당한 스레드의 ID입니다. |
status | int | 내부 상태 플래그입니다. |
instruction_address | varbinary(8) | 현재 실행 중인 명령의 주소입니다. |
creation_time | 날짜/시간 | 이 스레드가 만들어진 시간입니다. |
kernel_time | bigint | 이 스레드에서 사용하는 커널 시간의 양입니다. |
usermode_time | bigint | 이 스레드에서 사용하는 사용자 시간의 양입니다. |
stack_base_address | varbinary(8) | 이 스레드에 대한 최상위 스택 주소의 메모리 주소입니다. |
stack_end_address | varbinary(8) | 이 스레드에 대한 최하위 스택 주소의 메모리 주소입니다. |
stack_bytes_committed | int | 스택에서 커밋된 바이트 수입니다. |
stack_bytes_used | int | 스레드에서 현재 사용 중인 바이트 수입니다. |
선호도 | bigint | 이 스레드가 실행 중인 CPU 마스크입니다. 이는 ALTER SERVER CONFIGURATION SET PROCESS AFFINITY 문으로 구성된 값에 따라 달라집니다. 소프트 선호도의 경우 스케줄러와 다를 수 있습니다. |
우선 순위 | int | 이 스레드의 우선 순위 값입니다. |
Locale | int | 스레드에 대해 캐시된 로캘 LCID입니다. |
토큰 | varbinary(8) | 스레드에 대한 캐시된 가장 토큰 핸들입니다. |
is_impersonating | int | 이 스레드가 Win32 가장을 사용하고 있는지 여부를 나타냅니다. 1 = 스레드가 프로세스의 기본값과 다른 보안 자격 증명을 사용하고 있습니다. 이는 스레드가 프로세스를 만든 엔터티가 아닌 다른 엔터티를 가장하고 있음을 나타냅니다. |
is_waiting_on_loader_lock | int | 스레드가 로더 잠금을 기다리고 있는지 여부의 운영 체제 상태입니다. |
fiber_data | varbinary(8) | 스레드에서 실행 중인 현재 Win32 파이버입니다. 이는 SQL Server가 경량 풀링을 위해 구성된 경우에만 적용됩니다. |
thread_handle | varbinary(8) | 내부용으로만 사용됩니다. |
event_handle | varbinary(8) | 내부용으로만 사용됩니다. |
scheduler_address | varbinary(8) | 이 스레드와 연결된 스케줄러의 메모리 주소입니다. 자세한 내용은 sys.dm_os_schedulers(Transact-SQL)를 참조하세요. |
worker_address | varbinary(8) | 이 스레드에 바인딩된 작업자의 메모리 주소입니다. 자세한 내용은 sys.dm_os_workers(Transact-SQL)를 참조 하세요. |
fiber_context_address | varbinary(8) | 내부 파이버 컨텍스트 주소입니다. 이는 SQL Server가 경량 풀링을 위해 구성된 경우에만 적용됩니다. |
self_address | varbinary(8) | 내부 일관성 포인터입니다. |
processor_group | smallint | 적용 대상: SQL Server 2008 R2(10.50.x) 이상. 프로세서 그룹 ID입니다. |
pdw_node_id | int | 적용 대상: Azure Synapse Analytics, Analytics Platform System(PDW) 이 배포가 있는 노드의 식별자입니다. |
사용 권한
SQL Server 및 SQL Managed Instance에서는 VIEW SERVER STATE
권한이 필요합니다.
SQL Database Basic, S0 및 S1 서비스 목표 및 탄력적 풀의 데이터베이스에는 서버 관리자 계정, Microsoft Entra 관리자 계정 또는 서버 역할의 ##MS_ServerStateReader##
멤버 자격이 필요합니다. 다른 모든 SQL Database 서비스 목표에 대해서는 데이터베이스에 대한 VIEW DATABASE STATE
권한 또는 ##MS_ServerStateReader##
서버 역할의 멤버 자격이 필요합니다.
SQL Server 2022 이상에 대한 권한
서버에 대한 VIEW SERVER PERFORMANCE STATE 권한이 필요합니다.
Linux 버전에 대한 참고 사항
SQL 엔진이 Linux에서 작동하는 방식 때문에 이 정보 중 일부는 Linux 진단 데이터와 일치하지 않습니다. 예를 들어 os_thread_id
도구(예: ps
top
또는 절차)의 결과와pid
일치하지 않습니다. 이는 SQL Server 구성 요소와 운영 체제 간의 계층인 SQLPAL(플랫폼 추상화 계층)때문입니다.
예제
시작 시 SQL Server는 스레드를 시작한 다음 작업자를 해당 스레드와 연결합니다. 그러나 확장 저장 프로시저와 같은 외부 구성 요소는 SQL Server 프로세스에서 스레드를 시작할 수 있습니다. SQL Server는 이러한 스레드를 제어할 수 없습니다. sys.dm_os_threads SQL Server 프로세스에서 리소스를 사용하는 불량 스레드에 대한 정보를 제공할 수 있습니다.
다음 쿼리는 SQL Server에서 시작하지 않은 스레드를 실행하는 실행 시간과 함께 작업자를 찾는 데 사용됩니다.
참고 항목
간결성을 위해 다음 쿼리는 문에 별표(*
)를 SELECT
사용합니다. 특히 카탈로그 뷰, 동적 관리 뷰 및 시스템 테이블 반환 함수에 대해 별표(*)를 사용하지 않아야 합니다. Microsoft SQL Server의 향후 업그레이드 및 릴리스에서는 열을 추가하고 열 순서를 이러한 보기 및 함수로 변경할 수 있습니다. 이러한 변경으로 특정 순서 및 열 수가 예상되는 애플리케이션이 중단될 수 있습니다.
SELECT *
FROM sys.dm_os_threads
WHERE started_by_sqlservr = 0;
참고 항목
sys.dm_os_workers(Transact-SQL)
SQL Server 운영 체제 관련 동적 관리 뷰(Transact-SQL)