sys.dm_os_tasks (T-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Mengembalikan satu baris untuk setiap tugas yang aktif dalam instans SQL Server. Tugas adalah unit dasar eksekusi di SQL Server. Contoh tugas termasuk kueri, login, keluar, dan tugas sistem seperti aktivitas pembersihan hantu, aktivitas titik pemeriksaan, penulis log, aktivitas pengulangan paralel. 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_tasks. Sintaks ini tidak didukung oleh kumpulan SQL tanpa server di Azure Synapse Analytics.

Nama kolom Jenis data Deskripsi
task_address varbinary(8) Alamat memori objek.
task_state nvarchar(60) Status tugas. Bisa jadi salah satu dari yang berikut:

TERTUNDA: Menunggu utas pekerja.

RUNNABLE: Dapat dijalankan, tetapi menunggu untuk menerima kuantum.

BERJALAN: Saat ini berjalan pada penjadwal.

DITANGGUHKAN: Memiliki pekerja, tetapi sedang menunggu acara.

SELESAI: Selesai.

Terjebak dalam spinlock.
context_switches_count int Jumlah pengalihan konteks penjadwal yang telah diselesaikan tugas ini.
pending_io_count int Jumlah I/Os fisik yang dilakukan oleh tugas ini.
pending_io_byte_count bigint Jumlah byte total I/Os yang dilakukan oleh tugas ini.
pending_io_byte_average int Jumlah byte rata-rata I/Os yang dilakukan oleh tugas ini.
scheduler_id int ID penjadwal induk. Ini adalah handel untuk informasi penjadwal untuk tugas ini. Untuk informasi selengkapnya, lihat sys.dm_os_schedulers (Transact-SQL).
session_id smallint ID sesi yang terkait dengan tugas.
exec_context_id int ID konteks eksekusi yang terkait dengan tugas.
request_id int ID permintaan tugas. Untuk informasi lebih lanjut, lihat sys.dm_exec_requests (Transact-SQL).
worker_address varbinary(8) Alamat memori pekerja yang menjalankan tugas.

NULL = Tugas sedang menunggu pekerja dapat dijalankan, atau tugas baru saja selesai berjalan.

Untuk informasi selengkapnya, lihat sys.dm_os_workers (Transact-SQL).
host_address varbinary(8) Alamat memori host.

0 = Hosting tidak digunakan untuk membuat tugas. Ini membantu mengidentifikasi host yang digunakan untuk membuat tugas ini.

Untuk informasi selengkapnya, lihat sys.dm_os_hosts (Transact-SQL).
parent_task_address varbinary(8) Alamat memori tugas yang merupakan induk objek.
pdw_node_id int Berlaku untuk: Azure Synapse Analytics, Analytics Platform System (PDW)

Pengidentifikasi untuk simpul tempat distribusi ini aktif.

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 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.

Izin untuk SQL Server 2022 dan yang lebih baru

Memerlukan izin TAMPILKAN STATUS PERFORMA SERVER pada server.

Contoh

J. Memantau permintaan paralel

Untuk permintaan yang dijalankan secara paralel, Anda akan melihat beberapa baris untuk kombinasi yang sama (<session_id>,< request_id).> Gunakan kueri berikut untuk menemukan Konfigurasi tingkat maksimum Opsi Konfigurasi Server paralelisme untuk semua permintaan aktif.

Catatan

Request_id unik dalam sesi.

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. Mengaitkan ID sesi dengan utas Windows

Anda bisa menggunakan kueri berikut untuk mengaitkan nilai ID sesi dengan ID utas Windows. Anda kemudian dapat memantau performa utas di Monitor Performa Windows. Kueri berikut ini tidak mengembalikan informasi untuk sesi yang sedang tidur.

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  

Baca juga

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