sys.dm_qn_subscriptions (Transact-SQL)
Gibt Informationen zu den aktiven Abfragebenachrichtigungsabonnements auf dem Server zurück. Diese Sicht können Sie verwenden, um in der Serverdatenbank oder in einer angegebenen Datenbank eine Überprüfung auf aktive Abonnements vorzunehmen oder um auf eine Überprüfung auf einen angegebenen Serverprinzipal vorzunehmen.
Spaltenname |
Datentyp |
Beschreibung |
---|---|---|
id |
int |
ID eines Abonnements. |
database_id |
int |
ID der Datenbank, für die die Abfragebenachrichtigung ausgeführt wurde. In dieser Datenbank sind die mit diesem Abonnement verbundenen Informationen gespeichert. |
sid |
varbinary(85) |
Sicherheits-ID des Serverprinzipals, der dieses Abonnement erstellt hat und besitzt. |
object_id |
int |
ID der internen Tabelle, in der die Informationen zu Abonnementparametern gespeichert sind. |
created |
datetime |
Datum und Uhrzeit der Erstellung des Abonnements. |
timeout |
int |
Timeout für das Abonnement in Sekunden. Die Benachrichtigung wird ausgelöst, nachdem diese Zeit verstrichen ist.
Hinweis
Die tatsächliche Zeit der Auslösung kann größer sein als das angegebene Timeout. Wenn jedoch eine Änderung, die das Abonnement ungültig macht, nach dem angegebenen Timeout und vor dem Auslösen des Abonnements auftritt, wird von SQL Server sichergestellt, dass das Auslösen zu dem Zeitpunkt erfolgt, an dem die Änderung vorgenommen wurde.
|
Status |
int |
Zeigt den Status des Abonnements an. Die Liste der Codes finden Sie in der Tabelle unter den Hinweisen. |
Kardinalitäten der Beziehungen
Von |
In |
Für |
Typ |
---|---|---|---|
sys.dm_qn_subscriptions |
sys.databases |
database_id |
n:1 |
sys.dm_qn_subscriptions |
sys.internal_tables |
object_id |
n:1 |
Hinweise
Der Statuscode 0 gibt einen nicht definierten Status an.
Die folgenden Statuscodes geben an, dass ein Abonnement aufgrund einer Änderung ausgelöst wurde:
Code |
Untergeordneter Status |
Info |
---|---|---|
65798 |
Abonnement wurde ausgelöst, da sich Daten geändert haben. |
Abonnement wurde durch eine Einfügung ausgelöst. |
65799 |
Abonnement wurde ausgelöst, da sich Daten geändert haben. |
Löschen |
65800 |
Abonnement wurde ausgelöst, da sich Daten geändert haben. |
Aktualisieren |
65801 |
Abonnement wurde ausgelöst, da sich Daten geändert haben. |
Zusammenführen |
65802 |
Abonnement wurde ausgelöst, da sich Daten geändert haben. |
Tabelle kürzen |
66048 |
Abonnement wurde ausgelöst, da das Timeout abgelaufen ist. |
Nicht definierter Infomodus |
66315 |
Abonnement wurde ausgelöst, da sich ein Objekt geändert hat. |
Objekt oder Benutzer wurde gelöscht. |
66316 |
Abonnement wurde ausgelöst, da sich ein Objekt geändert hat. |
Objekt wurde geändert. |
66565 |
Abonnement wurde ausgelöst, da eine Datenbank getrennt oder gelöscht wurde. |
Server oder Datenbank wurde neu gestartet. |
66571 |
Abonnement wurde ausgelöst, da eine Datenbank getrennt oder gelöscht wurde. |
Objekt oder Benutzer wurde gelöscht. |
66572 |
Abonnement wurde ausgelöst, da eine Datenbank getrennt oder gelöscht wurde. |
Objekt wurde geändert. |
67341 |
Abonnement wurde aufgrund von Ressourcenmangel auf dem Server ausgelöst. |
Abonnement wurde aufgrund von Ressourcenmangel auf dem Server ausgelöst. |
Die folgenden Statuscodes geben an, dass ein Abonnement nicht erstellt wurde:
Code |
Untergeordneter Status |
Info |
---|---|---|
132609 |
Abonnement konnte nicht erstellt werden, da die Anweisung nicht unterstützt wird. |
Abfrage ist zu komplex. |
132610 |
Abonnement konnte nicht erstellt werden, da die Anweisung nicht unterstützt wird. |
Ungültige Anweisung für Abonnement. |
132611 |
Abonnement konnte nicht erstellt werden, da die Anweisung nicht unterstützt wird. |
Ungültige festgelegte Optionen für das Abonnement. |
132612 |
Abonnement konnte nicht erstellt werden, da die Anweisung nicht unterstützt wird. |
Ungültige Isolationsstufe |
132622 |
Abonnement konnte nicht erstellt werden, da die Anweisung nicht unterstützt wird. |
Wird intern verwendet. |
132623 |
Abonnement konnte nicht erstellt werden, da die Anweisung nicht unterstützt wird. |
Überschreitet den Vorlagengrenzwert pro Tabelle. |
Die folgenden Statuscodes werden intern verwendet und als Check Kill- und Init-Modi klassifiziert:
Code |
Untergeordneter Status |
Info |
---|---|---|
198656 |
Intern verwendet: Check Kill- und Init-Modus |
Nicht definierter Infomodus |
198928 |
Abonnement wurde zerstört. |
Abonnement wurde ausgelöst, da eine Datenbank angefügt wurde. |
198929 |
Abonnement wurde zerstört. |
Abonnement wurde ausgelöst, da ein Benutzer gelöscht wurde. |
198930 |
Abonnement wurde zerstört. |
Abonnement wurde aufgrund eines erneuten Abonnements gelöscht. |
198931 |
Abonnement wurde zerstört. |
Abonnement wurde abgebrochen. |
199168 |
Abonnement ist aktiv. |
Nicht definierter Infomodus |
199424 |
Abonnement wurde initialisiert, ist aber noch nicht aktiv. |
Nicht definierter Infomodus |
Berechtigungen
Erfordert die VIEW SERVER STATE-Berechtigung auf dem Server.
Hinweis |
---|
Falls der Benutzer die VIEW SERVER STATE-Berechtigung nicht besitzt, gibt diese Sicht Informationen zu Abonnements zurück, die sich im Besitz des aktuellen Benutzers befinden. |
Beispiele
A. Zurückgeben aktiver Abfragebenachrichtigungsabonnements für den aktuellen Benutzer
Im folgenden Beispiel werden die aktiven Abfragebenachrichtigungsabonnements des aktuellen Benutzers zurückgegeben. Wenn der Benutzer über VIEW SERVER STATE-Berechtigungen verfügt, werden alle aktiven Abonnements auf dem Server zurückgegeben.
SELECT id, database_id, sid, object_id, created, timeout, status
FROM sys.dm_qn_subscriptions;
GO
B. Zurückgeben aktiver Abfragebenachrichtigungsabonnements für einen angegebenen Benutzer
Im folgenden Beispiel werden die aktiven Abfragebenachrichtigungsabonnements zurückgegeben, die vom Anmeldenamen Ruth0 abonniert wurden.
SELECT id, database_id, sid, object_id, created, timeout, status
FROM sys.dm_qn_subscriptions
WHERE sid = SUSER_SID('Ruth0');
GO
C. Zurückgeben der Metadaten interner Tabellen für Abfragebenachrichtigungsabonnements
Im folgenden Beispiel werden die Metadaten interner Tabellen für Abfragebenachrichtigungsabonnements zurückgegeben.
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