다음을 통해 공유


sys.dm_os_tasks(Transact-SQL)

SQL Server 인스턴스에서 활성 상태인 각 태스크에 대해 하나의 행을 반환합니다.

열 이름

데이터 형식

설명

task_address

varbinary(8)

개체의 메모리 주소입니다.

task_state

nvarchar(60)

태스크의 상태입니다. 다음 중 하나일 수 있습니다.

PENDING: 작업자 스레드 대기 중입니다.

RUNNABLE: 실행 가능하지만 퀀텀 수신 대기 중입니다.

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

SUSPENDED: 작업자가 있지만 이벤트 대기 중입니다.

DONE: 완료되었습니다.

SPINLOOP: spinlock에 걸렸습니다.

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)

개체의 부모인 태스크의 메모리 주소입니다.

사용 권한

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

1.병렬 요청 모니터링

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

[!참고]

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;

2.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

참고 항목

참조

동적 관리 뷰 및 함수(Transact-SQL)

SQL Server 운영 체제 관련 동적 관리 뷰(Transact-SQL)