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 | Penggabungan |
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 telah 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)