sys.dm_os_waiting_tasks (SQL Bertransaksi)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics Analytics yesPlatform System (PDW)

Mengembalikan informasi tentang antrean tunggu tugas yang menunggu di beberapa sumber daya. Untuk informasi selengkapnya tentang tugas, lihat Panduan Arsitektur Utas dan Tugas.

Catatan

Untuk memanggil ini dari Azure Synapse Analytics atau Analytics Platform System (PDW), gunakan nama sys.dm_pdw_nodes_os_waiting_tasks. Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.

Nama kolom Jenis data Deskripsi
waiting_task_address varbinary(8) Alamat tugas menunggu.
session_id smallint ID sesi yang terkait dengan tugas.
exec_context_id int ID konteks eksekusi yang terkait dengan tugas.
wait_duration_ms bigint Total waktu tunggu untuk jenis tunggu ini, dalam milidetik. Kali ini termasuk signal_wait_time.
wait_type nvarchar(60) Nama jenis tunggu.
resource_address varbinary(8) Alamat sumber daya yang tugasnya menunggu.
blocking_task_address varbinary(8) Tugas yang saat ini memegang sumber daya ini
blocking_session_id smallint ID sesi yang memblokir permintaan. Jika kolom ini NULL, permintaan tidak diblokir, atau informasi sesi pemblokiran tidak tersedia (atau tidak dapat diidentifikasi).

-2 = Sumber daya pemblokiran dimiliki oleh transaksi terdistribusi tanpa sumber.

-3 = Sumber daya pemblokiran dimiliki oleh transaksi pemulihan yang ditangguhkan.

-4 = ID Sesi pemilik latch pemblokiran tidak dapat ditentukan karena transisi status kait internal.
blocking_exec_context_id int ID konteks eksekusi tugas pemblokiran.
resource_description nvarchar(3072) Deskripsi sumber daya yang sedang digunakan. Untuk informasi selengkapnya, lihat daftar di bawah ini.
pdw_node_id int Berlaku untuk: Azure Synapse Analytics, Analytics Platform System (PDW)

Pengidentifikasi untuk simpul tempat distribusi ini aktif.

kolom resource_description

Kolom resource_description memiliki nilai yang mungkin berikut ini.

Pemilik sumber daya kumpulan utas:

  • threadpool id=scheduler<hex-address>

Pemilik sumber daya kueri paralel:

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

jenis tunggu Exchange:

  • e_waitNone

  • e_waitPipeNewRow

  • e_waitPipeGetRow

  • e_waitSynchronizeConsumerOpen

  • e_waitPortOpen

  • e_waitPortClose

  • e_waitRange

Kunci pemilik sumber daya:

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

    <type-specific-description> dapat berupa:

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

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

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

    • Untuk HALAMAN: pagelock fileid=<file-id> pageid=<page-id> dbid=<db-id> subresource=<pagelock-subresource>

    • Untuk Kunci: keylock hobtid=<hobt-id> dbid=<db-id>

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

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

    • Untuk APLIKASI: applicationlock hash=<hash> databasePrincipalId=<role-id> dbid=<db-id>

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

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

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

    <mode> dapat berupa:

    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

Pemilik sumber daya eksternal:

  • ExternalResource=<wait-type>

Pemilik sumber daya generik:

  • TransactionMutex TransactionInfo Workspace=<workspace-id>

  • Mutex

  • CLRTaskJoin

  • CLRMonitorEvent

  • CLRRWLockEvent

  • resourceWait

Pemilik sumber daya latch:

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

  • <GUID>

  • <kelas> latch (<alamat> latch)

Izin

Pada SQL Server dan SQL Managed Instance, memerlukan VIEW SERVER STATE izin.

Pada tujuan layanan SQL Database Basic, S0, dan S1, dan untuk database di kumpulan elastis, akun admin server, akun admin Azure Active Directory, atau keanggotaan dalam ##MS_ServerStateReader##peran server diperlukan. Pada semua tujuan layanan SQL Database lainnya, izin VIEW DATABASE STATE pada database, atau keanggotaan dalam ##MS_ServerStateReader## peran server diperlukan.

Contoh

J. Identifikasi tugas dari sesi yang diblokir.

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

B. Menampilkan tugas tunggu per koneksi

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. Menampilkan tugas menunggu untuk semua proses pengguna dengan informasi tambahan

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 owt
INNER JOIN sys.dm_exec_sessions es ON owt.session_id = es.session_id
INNER JOIN sys.dm_exec_requests er ON es.session_id = er.session_id
OUTER APPLY sys.dm_exec_sql_text (er.sql_handle) est
OUTER APPLY sys.dm_exec_query_plan (er.plan_handle) eqp
WHERE es.is_user_process = 1
ORDER BY owt.session_id;
GO

Lihat juga

Tampilan Manajemen Dinamis Terkait Sistem Operasi SQL Server (Transact-SQL)
Panduan Arsitektur Utas dan Tugas