다음을 통해 공유


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, S0S1 서비스 목표 및 탄력적 풀의 데이터베이스에는 서버 관리자 계정, 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 도구(예: pstop 또는 절차)의 결과와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)