Aracılığıyla paylaş


sys.dm_os_tasks (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)Microsoft Fabric'te SQL Veritabanı

SQL Server örneğinde aktif olan her görev için bir satır döndürür. Görev, SQL Server'da temel yürütme birimidir. Görev örnekleri arasında sorgu, giriş, çıkış ve hayalet temizleme etkinliği, kontrol noktası etkinliği, log yazarı, paralel tekrar etme aktivitesi gibi sistem görevleri yer alır. Görevler hakkında daha fazla bilgi için Thread and Task Architecture Guide'a bakınız.

Uyarı

Bunu Azure Synapse Analytics veya Analytics Platform System (PDW) olarak adlandırmak için sys.dm_pdw_nodes_os_tasks adını kullanın. Bu söz dizimi, Azure Synapse Analytics'teki sunucusuz SQL havuzu tarafından desteklenmez.

Sütun adı Veri türü Description
task_address varbinary(8) Nesnenin bellek adresi.
task_state nvarchar(60) Görevin durumu. Bu şu durumlardan biri olabilir:

BEKLEMEDE: Bir işçi başlığı bekliyorum.

RUNNABLE: Runnable ama kuantum almak için bekliyor.

ÇALIŞTIRARAK: Şu anda programlayıcıda çalışıyor.

ASKIYA ALINDI: Bir çalışanı var ama bir etkinlik bekliyor.

YAPILDI: Tamamlandı.

SPINLOOP: Spinlock'ta sıkışıp kalmış.
context_switches_count int Bu görevin tamamladığı zamanlayıcı bağlam anahtarlamalarının sayısı.
pending_io_count int Bu görevle gerçekleştirilen fiziksel G/O sayısı.
pending_io_byte_count bigint Bu görev tarafından gerçekleştirilen I/O'ların toplam bayt sayısı.
pending_io_byte_average int Bu görev tarafından gerçekleştirilen G/O ortalama bayt sayısı.
scheduler_id int Ebeveyn zamanlayıcının kimliği. Bu, bu görev için zamanlayıcı bilgisinin bir kullanıcı adıdır. Daha fazla bilgi için sys.dm_os_schedulers (Transact-SQL) bölümüne bakınız.
session_id smallint Görevle ilişkili oturumun kimliği.
exec_context_id int Görevle ilişkilendirilen yürütme bağlam kimliği.
request_id int Görev talebinin kimliği. Daha fazla bilgi için bkz . sys.dm_exec_requests (Transact-SQL).
worker_address varbinary(8) Görevi çalıştıran çalışanın bellek adresi.

NULL = Görev ya bir çalışanın çalışabilmesi için bekler, ya da görev yeni çalışmayı bitirmiştir.

Daha fazla bilgi için bkz. sys.dm_os_workers (Transact-SQL).
host_address varbinary(8) Ev sahibinin bellek adresi.

0 = Görev oluşturmak için barındırma kullanılmadı. Bu, bu görevi oluşturmak için kullanılan konakçının belirlenmesine yardımcı olur.

Daha fazla bilgi için sys.dm_os_hosts (Transact-SQL) sayfasına bakınız.
parent_task_address varbinary(8) Nesnenin ebeveyni olan görevin bellek adresi.
pdw_node_id int için geçerlidir: Azure Synapse Analytics, Analiz Platformu Sistemi (PDW)

Bu dağıtımın üzerinde olduğu düğümün tanımlayıcısı.

Permissions

SQL Server ve SQL Yönetilen Örneği'ne VIEW SERVER STATE izni gerekir.

SQL Veritabanı Temel,S0 ve S1 hizmet hedeflerinive elastik havuzlardaki veritabanları için, sunucu yöneticisi hesabı, Microsoft Entra yönetici hesabı veya ##MS_ServerStateReader##sunucu rolü ü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.

SQL Server 2022 ve üzeri için izinler

Sunucuda SUNUCU PERFORMANS DURUMUNU GÖRÜNTÜLE izni gerektirir.

Örnekler

A. Paralel taleplerin izlenmesi

Paralel olarak yürütülen istekler için, (<session_id>, <request_id>) kombinasyonu için birden fazla satır göreceksiniz. Tüm aktif istekler için Maksimum paralellik derecesini Yapılandırma Sunucu Yapılandırma Seçeneği'ni bulmak için aşağıdaki sorguyu kullanın.

Uyarı

Bir request_id seans içinde benzersizdir.

SELECT  
    task_address,  
    task_state,  
    context_switches_count,  
    pending_io_count,  
    pending_io_byte_count,  
    pending_io_byte_average,  
    scheduler_id,  
    session_id,  
    exec_context_id,  
    request_id,  
    worker_address,  
    host_address  
  FROM sys.dm_os_tasks  
  ORDER BY session_id, request_id;  

B. Oturum ID'lerinin Windows iş parçacıklarıyla ilişkilendirilmesi

Aşağıdaki sorguyu kullanarak bir oturum kimliği değerini Windows iş parçacığı kimliği ile ilişkilendirebilirsiniz. Daha sonra Windows Performans Monitörü'nde iş parçacığının performansını izleyebilirsiniz. Aşağıdaki sorgu, uykuda olan oturumlar için bilgi döndürmez.

SELECT STasks.session_id, SThreads.os_thread_id  
  FROM sys.dm_os_tasks AS STasks  
  INNER JOIN sys.dm_os_threads AS SThreads  
    ON STasks.worker_address = SThreads.worker_address  
  WHERE STasks.session_id IS NOT NULL  
  ORDER BY STasks.session_id;  
GO  

Ayrıca bakınız

SQL Server İşletim Sistemiyle İlgili Dinamik Yönetim Görünümleri (Transact-SQL)
İş Başlığı ve Görev Mimarisi Rehberi