sys.dm_os_waiting_tasks (Transact-SQL)


Updated: August 5, 2016

THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Returns information about the wait queue of tasks that are waiting on some resource.

System_CAPS_ICON_note.jpg Note

To call this from Azure SQL Data Warehouse or Parallel Data Warehouse, use the name sys.dm_pdw_nodes_os_waiting_tasks.

Column nameData typeDescription
waiting_task_addressvarbinary(8)Address of the waiting task.
session_idsmallintID of the session associated with the task.
exec_context_idintID of the execution context associated with the task.
wait_duration_msbigintTotal wait time for this wait type, in milliseconds. This time is inclusive of signal_wait_time.
wait_typenvarchar(60)Name of the wait type.
resource_addressvarbinary(8)Address of the resource for which the task is waiting.
blocking_task_addressvarbinary(8)Task that is currently holding this resource
blocking_session_idsmallintID of the session that is blocking the request. If this column is NULL, the request is not blocked, or the session information of the blocking session is not available (or cannot be identified).

-2 = The blocking resource is owned by an orphaned distributed transaction.

-3 = The blocking resource is owned by a deferred recovery transaction.

-4 = Session ID of the blocking latch owner could not be determined due to internal latch state transitions.
blocking_exec_context_idintID of the execution context of the blocking task.
resource_descriptionnvarchar(3072)Description of the resource that is being consumed. For more information, see the list below.
pdw_node_idintApplies to: Azure SQL Data Warehouse, Parallel Data Warehouse

The identifier for the node that this distribution is on.

The resource_description column has the following possible values.

Thread-pool resource owner:

  • threadpool id=scheduler<hex-address>

Parallel query resource owner:

  • exchangeEvent id={Port|Pipe}<hex-address> WaitType=<exchange-wait-type> nodeId=<exchange-node-id>


  • e_waitNone

  • e_waitPipeNewRow

  • e_waitPipeGetRow

  • e_waitSynchronizeConsumerOpen

  • e_waitPortOpen

  • e_waitPortClose

  • e_waitRange

Lock resource owner:

  • <type-specific-description> id=lock<lock-hex-address> mode=<mode> associatedObjectId=<associated-obj-id>

    <type-specific-description> can be:

    • For DATABASE: databaselock subresource=<databaselock-subresource> dbid=<db-id>

    • For FILE: filelock fileid=<file-id> subresource=<filelock-subresource> dbid=<db-id>

    • For OBJECT: objectlock lockPartition=<lock-partition-id> objid=<obj-id> subresource=<objectlock-subresource> dbid=<db-id>

    • For PAGE: pagelock fileid=<file-id> pageid=<page-id> dbid=<db-id> subresource=<pagelock-subresource>

    • For Key: keylock hobtid=<hobt-id> dbid=<db-id>

    • For EXTENT: extentlock fileid=<file-id> pageid=<page-id> dbid=<db-id>

    • For RID: ridlock fileid=<file-id> pageid=<page-id> dbid=<db-id>

    • For APPLICATION: applicationlock hash=<hash> databasePrincipalId=<role-id> dbid=<db-id>

    • For METADATA: metadatalock subresource=<metadata-subresource> classid=<metadatalock-description> dbid=<db-id>

    • For HOBT: hobtlock hobtid=<hobt-id> subresource=<hobt-subresource> dbid=<db-id>

    • For ALLOCATION_UNIT: allocunitlock hobtid=<hobt-id> subresource=<alloc-unit-subresource> dbid=<db-id>

    <mode> can be:

    Sch-S, Sch-M, S, U, X, IS, IU, IX, SIU, SIX, UIX, BU, RangeS-S, RangeS-U, RangeI-N, RangeI-S, RangeI-U, RangeI-X, RangeX-, RangeX-U, RangeX-X

External resource owner:

  • External ExternalResource=<wait-type>

Generic resource owner:

  • TransactionMutex TransactionInfo Workspace=<workspace-id>

  • Mutex

  • CLRTaskJoin

  • CLRMonitorEvent

  • CLRRWLockEvent

  • resourceWait

Latch resource owner:

  • <db-id>:<file-id>:<page-in-file>

  • <GUID>

  • <latch-class> (<latch-address>)

On SQL Server requires VIEW SERVER STATE permission on the server.

On SQL Database Premium Tiers requires the VIEW DATABASE STATE permission in the database. On SQL Database Standard and Basic Tiers requires the SQL Database admin account.

This example will identify blocked sessions. Execute the Transact-SQL query in SQL Server Management Studio.

SELECT * FROM sys.dm_os_waiting_tasks 
WHERE blocking_session_id IS NOT NULL; 

Dynamic Management Views and Functions (Transact-SQL)
SQL Server Operating System Related Dynamic Management Views (Transact-SQL)

Community Additions