sys.dm_os_tasks(Transact-SQL)sys.dm_os_tasks (Transact-SQL)

적용 대상: 예SQL Server 예Azure SQL Database 예Azure Synapse Analytics(SQL DW) 예병렬 데이터 웨어하우스 APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

SQL ServerSQL Server 인스턴스에서 활성 상태인 각 태스크에 대해 하나의 행을 반환합니다.Returns one row for each task that is active in the instance of SQL ServerSQL Server. 작업은 SQL Server의 기본 실행 단위입니다.A task is the basic unit of execution in SQL Server. 작업의 예로는 쿼리, 로그인, 로그 아웃 및 삭제할 정리 작업, 검사점 작업, 로그 작성기, 병렬 다시 실행 작업 등의 시스템 태스크가 있습니다.Examples of tasks include a query, a login, a logout, and system tasks like ghost cleanup activity, checkpoint activity, log writer, parallel redo activity. 작업에 대 한 자세한 내용은 스레드 및 태스크 아키텍처 가이드를 참조 하세요.For more information about tasks, see the Thread and Task Architecture Guide.

참고

Azure Synapse Analytics(SQL DW)Azure Synapse Analytics (SQL DW) 또는 병렬 데이터 웨어하우스Parallel Data Warehouse에서이를 호출 하려면 dm_pdw_nodes_os_tasks이름을 사용 합니다.To call this from Azure Synapse Analytics(SQL DW)Azure Synapse Analytics (SQL DW) or 병렬 데이터 웨어하우스Parallel Data Warehouse, use the name sys.dm_pdw_nodes_os_tasks.

열 이름Column name 데이터 형식Data type 설명Description
task_addresstask_address varbinary(8)varbinary(8) 개체의 메모리 주소입니다.Memory address of the object.
task_statetask_state nvarchar(60)nvarchar(60) 태스크의 상태입니다.State of the task. 다음 중 하나일 수 있습니다.This can be one of the following:

보류 중: 작업자 스레드를 기다리고 있습니다.PENDING: Waiting for a worker thread.

실행 가능: 실행 가능 하지만 퀀텀 수신을 대기 중입니다.RUNNABLE: Runnable, but waiting to receive a quantum.

실행 중: 현재 스케줄러에서 실행 중입니다.RUNNING: Currently running on the scheduler.

SUSPENDED: 작업자를 포함 하지만 이벤트를 기다리고 있습니다.SUSPENDED: Has a worker, but is waiting for an event.

완료 됨: 완료 됨.DONE: Completed.

SPINLOOP: spinlock에 걸려 있습니다.SPINLOOP: Stuck in a spinlock.
context_switches_countcontext_switches_count intint 이 태스크로 완료된 스케줄러 컨텍스트 전환 수입니다.Number of scheduler context switches that this task has completed.
pending_io_countpending_io_count intint 이 태스크로 수행된 실제 I/O 수입니다.Number of physical I/Os that are performed by this task.
pending_io_byte_countpending_io_byte_count bigintbigint 이 태스크로 수행된 I/O의 총 바이트 수입니다.Total byte count of I/Os that are performed by this task.
pending_io_byte_averagepending_io_byte_average intint 이 태스크로 수행된 I/O의 평균 바이트 수입니다.Average byte count of I/Os that are performed by this task.
scheduler_idscheduler_id intint 부모 스케줄러의 ID이며ID of the parent scheduler. 이 태스크의 스케줄러 정보에 대한 핸들입니다.This is a handle to the scheduler information for this task. 자세한 내용은 dm_os_schedulers (transact-sql)을 참조 하세요.For more information, see sys.dm_os_schedulers (Transact-SQL).
session_idsession_id smallintsmallint 태스크와 연결된 세션의 ID입니다.ID of the session that is associated with the task.
exec_context_idexec_context_id intint 태스크와 연결된 실행 컨텍스트 ID입니다.Execution context ID that is associated with the task.
request_idrequest_id intint 태스크 요청 ID입니다.ID of the request of the task. 자세한 내용은 dm_exec_requests (transact-sql)을 참조 하세요.For more information, see sys.dm_exec_requests (Transact-SQL).
worker_addressworker_address varbinary(8)varbinary(8) 태스크를 실행하고 있는 작업자의 메모리 주소입니다.Memory address of the worker that is running the task.

NULL = 작업자가 실행할 수 있을 때까지 태스크가 기다리고 있거나 방금 작업 실행이 완료되었습니다.NULL = Task is either waiting for a worker to be able to run, or the task has just finished running.

자세한 내용은 dm_os_workers (transact-sql)을 참조 하세요.For more information, see sys.dm_os_workers (Transact-SQL).
host_addresshost_address varbinary(8)varbinary(8) 호스트의 메모리 주소입니다.Memory address of the host.

0 = 호스팅이 태스크 만들기에 사용되지 않았습니다.0 = Hosting was not used to create the task. 이 값은 이 태스크를 만드는 데 사용된 호스트를 식별하는 데 유용합니다.This helps identify the host that was used to create this task.

자세한 내용은 dm_os_hosts (transact-sql)을 참조 하세요.For more information, see sys.dm_os_hosts (Transact-SQL).
parent_task_addressparent_task_address varbinary(8)varbinary(8) 개체의 부모인 태스크의 메모리 주소입니다.Memory address of the task that is the parent of the object.
pdw_node_idpdw_node_id intint 적용 대상: Azure Synapse Analytics(SQL DW)Azure Synapse Analytics (SQL DW), 병렬 데이터 웨어하우스Parallel Data WarehouseApplies to: Azure Synapse Analytics(SQL DW)Azure Synapse Analytics (SQL DW), 병렬 데이터 웨어하우스Parallel Data Warehouse

이 배포가 설정 된 노드의 식별자입니다.The identifier for the node that this distribution is on.

사용 권한Permissions

SQL ServerSQL Server에서 VIEW SERVER STATE 권한이 필요 합니다.On SQL ServerSQL Server, requires VIEW SERVER STATE permission.
SQL DatabaseSQL Database 프리미엄 계층에는 데이터베이스에 대 한 VIEW DATABASE STATE 권한이 필요 합니다.On SQL DatabaseSQL Database Premium Tiers, requires the VIEW DATABASE STATE permission in the database. SQL DatabaseSQL Database Standard 및 Basic 계층에서는 서버 관리자 또는 Azure Active Directory 관리자 계정이 필요 합니다.On SQL DatabaseSQL Database Standard and Basic Tiers, requires the Server admin or an Azure Active Directory admin account.

Examples

A.A. 병렬 요청 모니터링Monitoring parallel requests

병렬로 실행 되는 요청의 경우 동일한 조합 (<session_id>, <request_id>)에 대해 여러 행이 표시 됩니다.For requests that are executed in parallel, you will see multiple rows for the same combination of (<session_id>, <request_id>). 다음 쿼리를 사용 하 여 모든 활성 요청에 대 한 최대 병렬 처리 수준 서버 구성 옵션 을 찾을 수 있습니다.Use the following query to find the Configure the max degree of parallelism Server Configuration Option for all active requests.

참고

Request_id 는 세션 내에서 고유 합니다.A request_id is unique within a session.

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.B. Windows 스레드와 세션 ID 연결Associating session IDs with Windows threads

다음 쿼리를 사용하여 세션 ID 값을 Windows 스레드 ID와 연결할 수 있습니다.You can use the following query to associate a session ID value with a Windows thread ID. 그런 다음 Windows 성능 모니터에서 스레드의 성능을 모니터링할 수 있습니다.You can then monitor the performance of the thread in the Windows Performance Monitor. 다음 쿼리는 중지 상태인 세션에 대한 정보를 반환하지 않습니다.The following query does not return information for sessions that are sleeping.

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  

참고 항목See Also

SQL Server 운영 체제 관련 동적 관리 뷰 (transact-sql) SQL Server Operating System Related Dynamic Management Views (Transact-SQL)
스레드 및 태스크 아키텍처 가이드Thread and Task Architecture Guide