Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analytics Platform Sistemi (PDW)
Microsoft Fabric'te SQL Veritabanı
Bazı kaynaklarda bekleyen görevlerin bekleme kuyruğu hakkındaki bilgileri döndürür. Görevler hakkında daha fazla bilgi için bkz. İş parçacığı ve görev mimarisi kılavuzu.
Uyarı
Bunu Azure Synapse Analytics veya Analytics Platform Sistemi'nden (PDW) çağırmak için adını sys.dm_pdw_nodes_os_waiting_taskskullanın. Bu söz dizimi, Azure Synapse Analytics'teki sunucusuz SQL havuzu tarafından desteklenmez.
| Sütun adı | Veri türü | Description |
|---|---|---|
waiting_task_address |
varbinary(8) | Bekleyen görevin adresi. |
session_id |
smallint | Görevle ilişkili oturumun kimliği. |
exec_context_id |
int | Görevle ilişkili yürütme bağlamının kimliği. |
wait_duration_ms |
bigint | Bu bekleme türü için milisaniye cinsinden toplam bekleme süresi. Bu süre öğesini kapsar signal_wait_time. |
wait_type |
nvarchar(60) | Bekleme türünün adı. Daha fazla bilgi için bkz. sys.dm_os_wait_stats. |
resource_address |
varbinary(8) | Görevin beklediği kaynağın adresi. |
blocking_task_address |
varbinary(8) | Şu anda bu kaynağı tutan görev |
blocking_session_id |
smallint | İsteği engelleyen oturumun kimliği. Bu sütun ise NULListek engellenmez veya engelleme oturumunun oturum bilgileri kullanılamaz (veya tanımlanamaz).-2 = Engelleyici kaynak yalnız bırakılmış dağıtılmış bir işleme aittir.-3 = Engelleyen kaynak ertelenen bir kurtarma işlemine aittir.-4
=
session_id engelleyici mandal sahibinin iç mandal durumu geçişleri nedeniyle belirlenemedi. |
blocking_exec_context_id |
int | Engelleme görevinin yürütme bağlamının kimliği. |
resource_description |
nvarchar(3072) | Tüketilen kaynağın açıklaması. Daha fazla bilgi için bkz . resource_description sütunu. |
pdw_node_id |
int | Bu dağıtımın üzerinde olduğu düğümün tanımlayıcısı. Şunlar için geçerlidir: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW) |
Sütun resource_description
Sütun resource_description aşağıdaki olası değerlere sahiptir.
İş parçacığı havuzu kaynak sahibi
threadpool id=scheduler<hex-address>
Paralel sorgu kaynağı sahibi
exchangeEvent id={Port|Pipe}<hex-address> WaitType=<exchange-wait-type> nodeId=<exchange-node-id>
Exchange bekleme türü
e_waitNonee_waitPipeNewRowe_waitPipeGetRowe_waitSynchronizeConsumerOpene_waitPortOpene_waitPortClosee_waitRange
Kaynak sahibini kilitleme
<type-specific-description> id=lock<lock-hex-address> mode=<mode> associatedObjectId=<associated-obj-id>
<type-specific-description>şu olabilir:- için
DATABASE:databaselock subresource=<databaselock-subresource> dbid=<db-id> - için
FILE:filelock fileid=<file-id> subresource=<filelock-subresource> dbid=<db-id> - için
OBJECT:objectlock lockPartition=<lock-partition-id> objid=<obj-id> subresource=<objectlock-subresource> dbid=<db-id> - için
PAGE:pagelock fileid=<file-id> pageid=<page-id> dbid=<db-id> subresource=<pagelock-subresource> - için
Key:keylock hobtid=<hobt-id> dbid=<db-id> - için
EXTENT:extentlock fileid=<file-id> pageid=<page-id> dbid=<db-id> - için
RID:ridlock fileid=<file-id> pageid=<page-id> dbid=<db-id> - için
APPLICATION:applicationlock hash=<hash> databasePrincipalId=<role-id> dbid=<db-id> - için
METADATA:metadatalock subresource=<metadata-subresource> classid=<metadatalock-description> dbid=<db-id> - için
HOBT:hobtlock hobtid=<hobt-id> subresource=<hobt-subresource> dbid=<db-id> - için
ALLOCATION_UNIT:allocunitlock hobtid=<hobt-id> subresource=<alloc-unit-subresource> dbid=<db-id>
- için
<mode>şu olabilir: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
Dış kaynak sahibi
Dış ExternalResource=<wait-type>
Genel kaynak sahibi
-
TransactionMutexTransactionInfo Workspace=<workspace-id> MutexCLRTaskJoinCLRMonitorEventCLRRWLockEventresourceWait
Mandal kaynağı sahibi
<db-id>:<file-id>:<page-in-file><GUID><latch-class> (<latch-address>)
XACT (işlem) kaynak sahibi
İyileştirilmiş kilitleme etkinleştirildiğinde gerçekleşir:
-
xactlock:xactlock xdesIdLow=<xdesIdLow> xdesIdHigh=<xdesIdHigh> dbid=<dbid> id=<resource id> mode=<mode> UnderlyingResource (<keylock|ridlock>) hobtId=<hobtId> dbid=<dbid>
Permissions
SQL Server 2019 (15.x) ve önceki sürümler için izin gerekir VIEW SERVER STATE .
SQL Server 2022 (16.x) ve sonraki sürümleri ile SQL Server ve Azure SQL Yönetilen Örneği, sunucuda izin gerektirir VIEW SERVER PERFORMANCE STATE .
Azure SQL Veritabanı Temel, S0 ve S1 hizmet hedeflerinde ve elastik havuzlardaki veritabanları için sunucu yönetici hesabı, Microsoft Entra yönetici hesabı veya ##MS_ServerStateReader## üyeliği gereklidir. Diğer tüm SQL Veritabanı hizmet hedeflerinde, veritabanında VIEW DATABASE STATE izni veya ##MS_ServerStateReader## sunucu rolü üyeliği gereklidir.
Örnekler
A. Engellenen oturumlardan görevleri tanımlama
SELECT * FROM sys.dm_os_waiting_tasks
WHERE blocking_session_id IS NOT NULL;
B. Bağlantı başına bekleyen görevleri görüntüleme
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. Ek bilgilerle tüm kullanıcı işlemleri için bekleyen görevleri görüntüleme
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