Sorgu Bildirimleri - sys.dm_qn_subscriptions

Şunlar için geçerlidir: SQL Server

Sunucudaki aktif sorgu bildirimleri abonelikleriyle ilgili bilgileri döndürür. Bu görünümü, sunucuda veya belirli bir veritabanında aktif abonelikleri kontrol etmek veya belirli bir sunucu prensibasını kontrol etmek için kullanabilirsiniz.

Sütun adı Veri türü Description
id int Abonelik kimliği.
database_id int Bildirim sorgusunun yürütüldüğü veritabanının kimliği. Bu veritabanı, bu abonelikle ilgili bilgileri saklar.
Sid varbinary(85) Bu aboneliği oluşturan ve sahibi olan sunucu yöneticisinin güvenlik kimliği.
object_id int Abonelik parametreleriyle ilgili bilgileri saklayan iç tablonun ID'si.
Oluşturulan datetime Aboneliğin oluşturulduğu tarih ve saat.
Zaman aşımı int Abonelik süresi saniyeler içinde. Bu süre geçtikten sonra bildirim devreye girmeye işaretlenecek.

Not: Gerçek ateşleme süresi, belirtilen zaman aşımından daha uzun olabilir. Ancak, aboneliği geçersiz kılan bir değişiklik belirtilen zaman aşımından sonra ancak abonelik devre dışı bırakılmadan önce gerçekleşirse, SQL Server değişikliğin yapıldığı anda devre dışı bırakılmasını sağlar.
durum int Aboneliğin durumunu gösterir. Kodlar listesi için açıklamalar altındaki tabloya bakınız.

İlişki Kardinaliteleri

From To On Türü
sys.dm_qn_subscriptions sys.databases database_id Çoka bir
sys.dm_qn_subscriptions sys.internal_tables object_id Çoka bir

Açıklamalar

0 durum kodu, tanımlanmamış bir durumu gösterir.

Aşağıdaki durum kodları, bir aboneliğin bir değişiklik nedeniyle kapatıldığını gösterir:

Code Küçük statü Bilgi
65798 Abonelik kapatıldı çünkü veri değişti Abonelik insert ile tetikleniyor
65799 Abonelik kapatıldı çünkü veri değişti Silmek
65800 Abonelik kapatıldı çünkü veri değişti Güncelleştir
65801 Abonelik kapatıldı çünkü veri değişti Birleştir
65802 Abonelik kapatıldı çünkü veri değişti Kısma tablo
66048 Abonelik süresi dolduğu için kapatıldı Tanımlanmamış bilgi modu
66315 Abonelik kapandı çünkü nesne değişti nesne veya kullanıcı düşürüldü
66316 Abonelik kapandı çünkü nesne değişti nesne değiştirildi
66565 Abonelik kapatıldı çünkü veritabanı ayrıldı veya kaldırıldı sunucu veya veritabanı yeniden başlatıldı
66571 Abonelik kapatıldı çünkü veritabanı ayrıldı veya kaldırıldı nesne veya kullanıcı düşürüldü
66572 Abonelik kapatıldı çünkü veritabanı ayrıldı veya kaldırıldı nesne değiştirildi
67341 Abonelik, sunucudaki kaynak eksikliği nedeniyle tetiklendi Abonelik, sunucudaki kaynak eksikliği nedeniyle tetiklendi

Aşağıdaki durum kodları abonelik oluşturulamadığını gösterir:

Code Küçük statü Bilgi
132609 Abonelik oluşturma başarısız oldu çünkü ifade desteklenmiyor Sorgulama çok karmaşık
132610 Abonelik oluşturma başarısız oldu çünkü ifade desteklenmiyor Abonelik için geçersiz beyanı
132611 Abonelik oluşturma başarısız oldu çünkü ifade desteklenmiyor Abonelik için geçersiz set seçenekleri
132612 Abonelik oluşturma başarısız oldu çünkü ifade desteklenmiyor Geçersiz izolasyon seviyesi
132622 Abonelik oluşturma başarısız oldu çünkü ifade desteklenmiyor Dahili kullanım
132623 Abonelik oluşturma başarısız oldu çünkü ifade desteklenmiyor Tablo başına şablon sınırının üzerinde

Aşağıdaki durum kodları dahili olarak kullanılır ve kontrol öldürme ve başlatma modları olarak sınıflandırılır:

Code Küçük statü Bilgi
198656 İçsel olarak kullanılan: kontrol öldürme ve başlatma modları Tanımlanmamış bilgi modu
198928 Abonelik yok edildi Abonelik kapatıldı çünkü veritabanı bağlanmıştı
198929 Abonelik yok edildi Abonelik kapatıldı çünkü kullanıcı bırakıldı
198930 Abonelik yok edildi Abonelik yeniden abonelik nedeniyle kaldırıldı
198931 Abonelik yok edildi abonelik sona erdi
199168 Abonelik aktiftir Tanımlanmamış bilgi modu
199424 Abonelik başlatıldı ama henüz aktif değil Tanımlanmamış bilgi modu

Permissions

Sunucuda SUNUCU DURUMU izni gerektirir VIEW .

Note

Kullanıcının SUNUCU DURUMU izni yoksa VIEW bu görünüm mevcut kullanıcıya ait abonelikler hakkında bilgi döndürür.

SQL Server 2022 ve üzeri için izinler

Sunucuda SERVER PERFORMANCE STATE izni gerektirir VIEW .

Examples

A. Mevcut kullanıcı için aktif sorgu bildirimi aboneliklerini döndür

Aşağıdaki örnek, mevcut kullanıcının aktif sorgu bildirimi aboneliklerini döndürür. Kullanıcının SUNUCU DURUMU izinleri varsa VIEW , sunucudaki tüm aktif abonelikler geri döner.

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

B. Belirli bir kullanıcı için aktif sorgu bildirimi aboneliklerini geri göndermek

Aşağıdaki örnek, giriş Ruth0ile abone olan aktif sorgu bildirimi aboneliklerini geri döndürür.

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

C. Sorgu bildirimi abonelikleri için dahili tablo meta verisi döndürülüyor

Aşağıdaki örnek, sorgu bildirimi abonelikleri için dahili tablo meta verilerini döndürür.

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