sys.dm_os_threads(Transact-SQL)

적용 대상: SQL Server Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

SQL Server 프로세스에서 실행 중인 모든 SQL Server 운영 체제 스레드 목록을 반환합니다.

참고

Azure Synapse Analytics 또는 분석 플랫폼 시스템(PDW)에서 이를 호출하려면 이름 sys.dm_pdw_nodes_os_threads 사용합니다. 이 구문은 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다.

열 이름 데이터 형식 Description
thread_address varbinary(8) 스레드의 메모리 주소(기본 키)입니다.
started_by_sqlservr bit 스레드 시작자를 나타냅니다.

1 = SQL Server 스레드를 시작했습니다.

0 = 다른 구성 요소가 SQL Server 내에서 확장 저장 프로시저와 같은 스레드를 시작했습니다.
os_thread_id int 운영 체제가 할당한 스레드의 ID입니다.
상태 int 내부 상태 플래그입니다.
instruction_address varbinary(8) 현재 실행 중인 명령의 주소입니다.
creation_time datetime 이 스레드가 생성된 시간입니다.
kernel_time bigint 이 스레드가 사용하는 커널 시간입니다.
usermode_time bigint 이 스레드가 사용하는 사용자 시간입니다.
stack_base_address varbinary(8) 이 스레드에 대한 최상위 스택 주소의 메모리 주소입니다.
stack_end_address varbinary(8) 이 스레드에 대한 최하위 스택 주소의 메모리 주소입니다.
stack_bytes_committed int 스택에서 커밋된 바이트 수입니다.
stack_bytes_used int 스레드에서 사용하고 있는 바이트 수입니다.
affinity bigint 이 스레드가 실행되고 있는 CPU 마스크입니다. 이는 ALTER SERVER CONFIGURATION SET PROCESS AFFINITY 문에 의해 구성된 값에 따라 달라집니다. 소프트 선호도의 경우 스케줄러와 다를 수 있습니다.
우선 순위 int 이 스레드의 우선 순위 값입니다.
로캘 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, 분석 플랫폼 시스템(PDW)

이 배포가 있는 노드의 식별자입니다.

사용 권한

SQL Server 및 SQL Managed Instance에서는 VIEW SERVER STATE 권한이 필요합니다.

SQL Database Basic, S0S1 서비스 목표 또는 탄력적 풀 내의 데이터베이스에 대해서는 서버 관리자 계정, Azure Active Directory 관리자 계정 또는 ##MS_ServerStateReader##서버 역할 멤버 자격이 필요합니다. 다른 모든 SQL Database 서비스 목표에 대해서는 데이터베이스에 대한 VIEW DATABASE STATE 권한 또는 ##MS_ServerStateReader## 서버 역할의 멤버 자격이 필요합니다.

SQL Server 2022 이상에 대한 권한

서버에 대한 VIEW SERVER PERFORMANCE STATE 권한이 필요합니다.

Linux 버전에 대한 참고 사항

Linux에서 SQL 엔진이 작동하는 방식 때문에 이 정보 중 일부는 Linux 진단 데이터와 일치하지 않습니다. 예를 들어 는 os_thread_idtop 같은 ps도구의 결과 또는 procfs(/proc/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)