다음을 통해 공유


sys.dm_os_tasks(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_tasks 사용합니다. 이 구문은 Azure Synapse Analytics의 서버리스 SQL 풀에서 지원되지 않습니다.

열 이름 데이터 형식 설명
task_address varbinary(8) 개체의 메모리 주소입니다.
task_state nvarchar(60) 작업의 상태입니다. 다음 중 하나가 될 수 있습니다.

보류 중: 작업자 스레드를 기다리는 중입니다.

RUNNABLE: 실행 가능하지만 양자 수신을 기다리고 있습니다.

실행 중: 현재 스케줄러에서 실행 중입니다.

SUSPENDED: 작업자가 있지만 이벤트를 기다리고 있습니다.

완료: 완료되었습니다.

SPINLOOP: 스핀 잠금에 갇혀 있습니다.
context_switches_count int 이 작업이 완료된 스케줄러 컨텍스트 스위치의 수입니다.
pending_io_count int 이 태스크로 수행된 실제 I/O 수입니다.
pending_io_byte_count bigint 이 태스크로 수행된 I/O의 총 바이트 수입니다.
pending_io_byte_average int 이 작업에서 수행하는 I/O의 평균 바이트 수입니다.
scheduler_id int 부모 스케줄러의 ID입니다. 이 작업은 이 작업의 스케줄러 정보에 대한 핸들입니다. 자세한 내용은 sys.dm_os_schedulers(Transact-SQL)를 참조하세요.
session_id smallint 작업과 연결된 세션의 ID입니다.
exec_context_id int 작업과 연결된 실행 컨텍스트 ID입니다.
request_id int 작업 요청의 ID입니다. 자세한 내용은 sys.dm_exec_requests(Transact-SQL)를 참조 하세요.
worker_address varbinary(8) 작업을 실행하는 작업자의 메모리 주소입니다.

NULL = 작업이 작업자가 실행될 때까지 대기 중이거나 작업이 방금 실행되었습니다.

자세한 내용은 sys.dm_os_workers(Transact-SQL)를 참조 하세요.
host_address varbinary(8) 호스트의 메모리 주소입니다.

0 = 호스팅이 작업을 만드는 데 사용되지 않았습니다. 이렇게 하면 이 작업을 만드는 데 사용된 호스트를 식별할 수 있습니다.

자세한 내용은 sys.dm_os_hosts(Transact-SQL)를 참조 하세요.
parent_task_address varbinary(8) 개체의 부모인 작업의 메모리 주소입니다.
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 권한이 필요합니다.

예제

A. 병렬 요청 모니터링

병렬로 실행되는 요청의 경우 동일한 조합(<session_id, <request_id>>)에 대해 여러 행이 표시됩니다. 다음 쿼리를 사용하여 모든 활성 요청에 대한 최대 병렬 처리 수준 서버 구성 옵션을습니다.

참고 항목

request_id 세션 내에서 고유합니다.

SELECT  
    task_address,  
    task_state,  
    context_switches_count,  
    pending_io_count,  
    pending_io_byte_count,  
    pending_io_byte_average,  
    scheduler_id,  
    session_id,  
    exec_context_id,  
    request_id,  
    worker_address,  
    host_address  
  FROM sys.dm_os_tasks  
  ORDER BY session_id, request_id;  

B. Windows 스레드와 세션 ID 연결

다음 쿼리를 사용하여 세션 ID 값을 Windows 스레드 ID와 연결할 수 있습니다. 그런 다음 Windows 성능 모니터 스레드의 성능을 모니터링할 수 있습니다. 다음 쿼리는 절전 모드인 세션에 대한 정보를 반환하지 않습니다.

SELECT STasks.session_id, SThreads.os_thread_id  
  FROM sys.dm_os_tasks AS STasks  
  INNER JOIN sys.dm_os_threads AS SThreads  
    ON STasks.worker_address = SThreads.worker_address  
  WHERE STasks.session_id IS NOT NULL  
  ORDER BY STasks.session_id;  
GO  

참고 항목

SQL Server 운영 체제 관련 동적 관리 뷰(Transact-SQL)
스레드 및 태스크 아키텍처 가이드