Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Database Azure
SQLInstans
Terkelola Azure SQLAzure Synapse Analytics
Sistem Platform Analitik (PDW)
Database SQL di Microsoft Fabric
Menampilkan informasi mengenai antrean tugas yang menunggu pada sejumlah 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 tunggu. |
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 inklusif dari signal_wait_time. |
wait_type |
nvarchar(60) | Nama jenis tunggu. Untuk informasi selengkapnya, lihat sys.dm_os_wait_stats. |
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 adalah NULL, permintaan tidak diblokir, atau informasi sesi sesi pemblokiran tidak tersedia (atau tidak dapat diidentifikasi).-2 = Sumber daya pemblokiran dimiliki oleh transaksi terdistribusi tanpa intim.-3 = Sumber daya pemblokiran dimiliki oleh transaksi pemulihan yang ditangguhkan.-4
=
session_id pemilik kait 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 digunakan. Untuk informasi selengkapnya, lihat Kolom resource_description. |
pdw_node_id |
int | Pengidentifikasi untuk simpul tempat distribusi ini aktif. Berlaku untuk: Azure Synapse Analytics and Analytics Platform System (PDW) |
Kolom resource_description
Kolom resource_description memiliki kemungkinan nilai berikut.
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_waitNonee_waitPipeNewRowe_waitPipeGetRowe_waitSynchronizeConsumerOpene_waitPortOpene_waitPortClosee_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
PAGE:pagelock fileid=<file-id> pageid=<page-id> dbid=<db-id> subresource=<pagelock-subresource> - Untuk
Key: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
APPLICATION: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>
- Untuk
<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
Eksternal ExternalResource=<wait-type>
Pemilik sumber daya generik
-
TransactionMutexTransactionInfo Workspace=<workspace-id> MutexCLRTaskJoinCLRMonitorEventCLRRWLockEventresourceWait
Pemilik sumber daya kait
<db-id>:<file-id>:<page-in-file><GUID><latch-class> (<latch-address>)
Pemilik sumber daya XACT (transaksi)
Terjadi ketika penguncian yang dioptimalkan diaktifkan:
-
xactlock:xactlock xdesIdLow=<xdesIdLow> xdesIdHigh=<xdesIdHigh> dbid=<dbid> id=<resource id> mode=<mode> UnderlyingResource (<keylock|ridlock>) hobtId=<hobtId> dbid=<dbid>
Izin
SQL Server 2019 (15.x) dan versi yang lebih lama memerlukan VIEW SERVER STATE izin.
SQL Server 2022 (16.x) dan versi yang lebih baru, serta SQL Server dan Azure SQL Managed Instance, memerlukan VIEW SERVER PERFORMANCE STATE izin di server.
Pada tujuan layanan Azure SQL Database Basic, S0, dan S1 , dan untuk database di kumpulan elastis, akun admin server , akun admin Microsoft Entra , 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. Mengidentifikasi 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 tunggu 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 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