Delen via


sys.dm_os_waiting_tasks (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Retourneert informatie over de wachtwachtrij van taken die op een bepaalde resource wachten. Zie de handleiding thread- en taakarchitectuur voor meer informatie over taken.

Opmerking

Gebruik de naam sys.dm_pdw_nodes_os_waiting_tasksom dit aan te roepen vanuit Azure Synapse Analytics of Analytics Platform System (PDW). Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in Azure Synapse Analytics.

Kolomnaam Gegevenstype Description
waiting_task_address varbinary(8) Adres van de wachttaak.
session_id smallint Id van de sessie die is gekoppeld aan de taak.
exec_context_id int Id van de uitvoeringscontext die aan de taak is gekoppeld.
wait_duration_ms bigint Totale wachttijd voor dit wachttype, in milliseconden. Deze keer is inclusief signal_wait_time.
wait_type nvarchar(60) Naam van het wachttype. Zie sys.dm_os_wait_stats voor meer informatie.
resource_address varbinary(8) Adres van de resource waarvoor de taak wacht.
blocking_task_address varbinary(8) Taak die momenteel deze resource bevat
blocking_session_id smallint Id van de sessie die de aanvraag blokkeert. Als deze kolom is NULL, wordt de aanvraag niet geblokkeerd of is de sessiegegevens van de blokkerende sessie niet beschikbaar (of kunnen niet worden geïdentificeerd).

-2 = De blokkerende resource is eigendom van een zwevende gedistribueerde transactie.

-3 = De blokkerende resource is eigendom van een uitgestelde hersteltransactie.

-4 = session_id van de blokkeringseigenaar kan niet worden bepaald vanwege interne vergrendelingsstatusovergangen.
blocking_exec_context_id int Id van de uitvoeringscontext van de blokkeringstaak.
resource_description nvarchar(3072) Beschrijving van de resource die wordt gebruikt. Zie de kolom resource_description voor meer informatie.
pdw_node_id int De id voor het knooppunt waarop deze distributie zich bevindt.

Van toepassing op: Azure Synapse Analytics and Analytics Platform System (PDW)

De resource_description kolom

De resource_description kolom heeft de volgende mogelijke waarden.

Resource-eigenaar van thread-pool

threadpool id=scheduler<hex-address>

Eigenaar van parallelle queryresource

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

Exchange-wait-type

  • e_waitNone
  • e_waitPipeNewRow
  • e_waitPipeGetRow
  • e_waitSynchronizeConsumerOpen
  • e_waitPortOpen
  • e_waitPortClose
  • e_waitRange

Resource-eigenaar vergrendelen

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

  • <type-specific-description> kan het volgende zijn:

    • Voor DATABASE: databaselock subresource=<databaselock-subresource> dbid=<db-id>
    • Voor FILE: filelock fileid=<file-id> subresource=<filelock-subresource> dbid=<db-id>
    • Voor OBJECT: objectlock lockPartition=<lock-partition-id> objid=<obj-id> subresource=<objectlock-subresource> dbid=<db-id>
    • Voor PAGE: pagelock fileid=<file-id> pageid=<page-id> dbid=<db-id> subresource=<pagelock-subresource>
    • Voor Key: keylock hobtid=<hobt-id> dbid=<db-id>
    • Voor EXTENT: extentlock fileid=<file-id> pageid=<page-id> dbid=<db-id>
    • Voor RID: ridlock fileid=<file-id> pageid=<page-id> dbid=<db-id>
    • Voor APPLICATION: applicationlock hash=<hash> databasePrincipalId=<role-id> dbid=<db-id>
    • Voor METADATA: metadatalock subresource=<metadata-subresource> classid=<metadatalock-description> dbid=<db-id>
    • Voor HOBT: hobtlock hobtid=<hobt-id> subresource=<hobt-subresource> dbid=<db-id>
    • Voor ALLOCATION_UNIT: allocunitlock hobtid=<hobt-id> subresource=<alloc-unit-subresource> dbid=<db-id>
  • <mode> kan het volgende zijn:

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

Externe resource-eigenaar

Extern ExternalResource=<wait-type>

Algemene resource-eigenaar

  • TransactionMutex TransactionInfo Workspace=<workspace-id>
  • Mutex
  • CLRTaskJoin
  • CLRMonitorEvent
  • CLRRWLockEvent
  • resourceWait

Eigenaar van vergrendelingsresource

  • <db-id>:<file-id>:<page-in-file>
  • <GUID>
  • <latch-class> (<latch-address>)

XACT-resource-eigenaar (transactie)

Treedt op wanneer geoptimaliseerde vergrendeling is ingeschakeld:

  • xactlock: xactlock xdesIdLow=<xdesIdLow> xdesIdHigh=<xdesIdHigh> dbid=<dbid> id=<resource id> mode=<mode> UnderlyingResource (<keylock|ridlock>) hobtId=<hobtId> dbid=<dbid>

Permissions

VOOR SQL Server 2019 (15.x) en eerdere versies is toestemming vereist VIEW SERVER STATE .

SQL Server 2022 (16.x) en latere versies, en SQL Server en Azure SQL Managed Instance, vereisen VIEW SERVER PERFORMANCE STATE toestemming op de server.

Voor servicedoelstellingen van Azure SQL Database Basic, S0 en S1 en voor databases in elastische pools is het serverbeheerdersaccount , het Microsoft Entra-beheerdersaccount of het lidmaatschap van de ##MS_ServerStateReader##serverfunctie vereist. Voor alle andere SQL Database-servicedoelstellingen is de VIEW DATABASE STATE machtiging voor de database of het lidmaatschap van de ##MS_ServerStateReader## serverfunctie vereist.

Voorbeelden

Eén. Taken van geblokkeerde sessies identificeren

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

B. Wachttaken per verbinding weergeven

SELECT st.text AS [SQL Text],
       c.connection_id,
       w.session_id,
       w.wait_duration_ms,
       w.wait_type,
       w.resource_address,
       w.blocking_session_id,
       w.resource_description,
       c.client_net_address,
       c.connect_time
FROM sys.dm_os_waiting_tasks AS w
     INNER JOIN sys.dm_exec_connections AS c
         ON w.session_id = c.session_id
CROSS APPLY (SELECT *
             FROM sys.dm_exec_sql_text(c.most_recent_sql_handle)) AS st
WHERE w.session_id > 50
      AND w.wait_duration_ms > 0
ORDER BY c.connection_id, w.session_id;
GO

C. Wachttaken weergeven voor alle gebruikersprocessen met aanvullende informatie

SELECT 'Waiting_tasks' AS [Information],
       owt.session_id,
       owt.wait_duration_ms,
       owt.wait_type,
       owt.blocking_session_id,
       owt.resource_description,
       es.program_name,
       est.text,
       est.dbid,
       eqp.query_plan,
       er.database_id,
       es.cpu_time,
       es.memory_usage * 8 AS memory_usage_KB
FROM sys.dm_os_waiting_tasks AS owt
     INNER JOIN sys.dm_exec_sessions AS es
         ON owt.session_id = es.session_id
     INNER JOIN sys.dm_exec_requests AS er
         ON es.session_id = er.session_id
OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) AS est
OUTER APPLY sys.dm_exec_query_plan(er.plan_handle) AS eqp
WHERE es.is_user_process = 1
ORDER BY owt.session_id;
GO