Pemberitahuan Kueri - sys.dm_qn_subscriptions

Berlaku untuk:SQL Server

Mengembalikan informasi tentang langganan pemberitahuan kueri aktif di server. Anda dapat menggunakan tampilan ini untuk memeriksa langganan aktif di server atau database tertentu, atau untuk memeriksa prinsipal server tertentu.

Nama kolom Jenis data Deskripsi
id int ID langganan.
database_id int ID database tempat kueri pemberitahuan dijalankan. Database ini menyimpan informasi yang terkait dengan langganan ini.
Sid varbinary(85) ID keamanan prinsipal server yang membuat dan memiliki langganan ini.
object_id int ID tabel internal yang menyimpan informasi tentang parameter langganan.
Dibuat datetime Tanggal dan waktu langganan dibuat.
Timeout int Waktu habis untuk langganan dalam hitung detik. Pemberitahuan akan ditandai untuk diaktifkan setelah waktu ini berlalu.

Catatan: Waktu penembakan aktual mungkin lebih besar dari waktu habis yang ditentukan. Namun, jika perubahan yang membatalkan langganan terjadi setelah waktu habis yang ditentukan, tetapi sebelum langganan diaktifkan, SQL Server memastikan bahwa penembakan terjadi pada saat perubahan dilakukan.
status int Menunjukkan status langganan. Lihat tabel di bawah keterangan untuk daftar kode.

Kardinalitas Hubungan

Dari Untuk Aktif Jenis
sys.dm_qn_subscriptions sys.databases database_id Banyak ke satu
sys.dm_qn_subscriptions sys.internal_tables object_id Banyak ke satu

Keterangan

Kode status 0 menunjukkan status yang tidak terdefinisi.

Kode status berikut menunjukkan bahwa langganan diaktifkan karena perubahan:

Kode Status minor Info
65798 Langganan diaktifkan karena data berubah Langganan dipicu oleh sisipkan
65799 Langganan diaktifkan karena data berubah Hapus
65800 Langganan diaktifkan karena data berubah Pembaruan
65801 Langganan diaktifkan karena data berubah Gabung
65802 Langganan diaktifkan karena data berubah Potong tabel
66048 Langganan diaktifkan karena waktu habis kedaluwarsa Mode info yang tidak ditentukan
66315 Langganan diaktifkan karena objek berubah objek atau pengguna dihilangkan
66316 Langganan diaktifkan karena objek berubah objek diubah
66565 Langganan diaktifkan karena database dilepas atau dihilangkan server atau db dimulai ulang
66571 Langganan diaktifkan karena database dilepas atau dihilangkan objek atau pengguna dihilangkan
66572 Langganan diaktifkan karena database dilepas atau dihilangkan objek diubah
67341 langganan dipicu karena kurangnya sumber daya od di server langganan dipicu karena kurangnya sumber daya od di server

Kode status berikut menunjukkan bahwa langganan gagal dibuat:

Kode Status minor Info
132609 Pembuatan langganan gagal karena pernyataan tidak didukung Kueri terlalu kompleks
132610 Pembuatan langganan gagal karena pernyataan tidak didukung Pernyataan tidak valid untuk langganan
132611 Pembuatan langganan gagal karena pernyataan tidak didukung Opsi set tidak valid untuk langganan
132612 Pembuatan langganan gagal karena pernyataan tidak didukung Tingkat isolasi tidak valid
132622 Pembuatan langganan gagal karena pernyataan tidak didukung digunakan secara internal
132623 Pembuatan langganan gagal karena pernyataan tidak didukung melebihi batas templat per tabel

Kode status berikut digunakan secara internal dan diklasifikasikan sebagai mode check kill dan init:

Kode Status minor Info
198656 Digunakan secara internal: periksa mode kill dan init Mode info yang tidak ditentukan
198928 Langganan dihancurkan Langganan diaktifkan karena db dilampirkan
198929 Langganan dihancurkan Langganan diaktifkan karena pengguna dihilangkan
198930 Langganan dihancurkan Langganan dihilangkan karena resubskripsi
198931 Langganan dihancurkan langganan dimatikan
199168 Langganan aktif Mode info yang tidak ditentukan
199424 Langganan diinisialisasi tetapi belum aktif Mode info yang tidak ditentukan

Izin

Memerlukan izin TAMPILKAN STATUS SERVER pada server.

Catatan

Jika pengguna tidak memiliki izin TAMPILKAN STATUS SERVER, tampilan ini mengembalikan informasi tentang langganan yang dimiliki oleh pengguna saat ini.

Izin untuk SQL Server 2022 dan yang lebih baru

Memerlukan izin TAMPILKAN STATUS PERFORMA SERVER pada server.

Contoh

J. Mengembalikan langganan pemberitahuan kueri aktif untuk pengguna saat ini

Contoh berikut mengembalikan langganan pemberitahuan kueri aktif pengguna saat ini. Jika pengguna memiliki izin TAMPILKAN STATUS SERVER, semua langganan aktif di server dikembalikan.

SELECT id, database_id, sid, object_id, created, timeout, status  
FROM sys.dm_qn_subscriptions;  
GO  

B. Mengembalikan langganan pemberitahuan kueri aktif untuk pengguna tertentu

Contoh berikut mengembalikan langganan pemberitahuan kueri aktif yang berlangganan dengan masuk Ruth0.

SELECT id, database_id, sid, object_id, created, timeout, status  
FROM sys.dm_qn_subscriptions  
WHERE sid = SUSER_SID('Ruth0');  
GO  

C. Mengembalikan metadata tabel internal untuk langganan pemberitahuan kueri

Contoh berikut mengembalikan metadata tabel internal untuk langganan pemberitahuan kueri.

SELECT qn.id AS query_subscription_id  
    ,it.name AS internal_table_name  
    ,it.object_id AS internal_table_id  
FROM sys.internal_tables AS it  
JOIN sys.dm_qn_subscriptions AS qn ON it.object_id = qn.object_id  
WHERE it.internal_type_desc = 'QUERY_NOTIFICATION';  
GO  

Lihat Juga

Tampilan dan Fungsi Manajemen Dinamis (Transact-SQL)
Pemberitahuan Kueri Terkait Tampilan Manajemen Dinamis (Transact-SQL)
LANGGANAN PEMBERITAHUAN KILL QUERY (Transact-SQL)