Frågenotiser - sys.dm_qn_subscriptions

Gäller för:SQL Server

Returnerar information om de aktiva frågenotifikationsprenumerationerna i servern. Du kan använda denna vy för att kontrollera aktiva prenumerationer på servern eller en specificerad databas, eller för att kontrollera en specificerad serverprincip.

Kolumnnamn Datatyp Description
id int ID på en prenumeration.
database_id int ID för databasen där notifikationsfrågan kördes. Denna databas lagrar information relaterad till denna prenumeration.
Sid varbinary(85) Säkerhets-ID för serverhuvudpersonen som skapade och äger denna prenumeration.
object_id int ID för den interna tabellen som lagrar information om prenumerationsparametrar.
skapad datetime Datum och tid då prenumerationen skapades.
timeout int Timeout för prenumerationen om några sekunder. Meddelandet kommer att flaggas som avfyra efter denna tid.

Observera: Den faktiska avfyrningstiden kan vara längre än den angivna timeouten. Men om en ändring som ogiltigförklarar prenumerationen sker efter den angivna timeouten, men innan prenumerationen avslutas, säkerställer SQL Server att avslutningen sker vid tidpunkten då ändringen gjordes.
Status int Indikerar statusen för prenumerationen. Se tabellen under kommentarer för listan över koder.

Relationskardinaliteter

From To On Type
sys.dm_qn_subscriptions sys.databases database_id Många-till-en
sys.dm_qn_subscriptions sys.internal_tables object_id Många-till-en

Remarks

Statuskoden 0 indikerar en odefinierad status.

Följande statuskoder indikerar att en prenumeration avslutades på grund av en ändring:

Kod Mindre status Info
65798 Prenumerationen avslutades eftersom data ändrades Prenumeration triggad av insättning
65799 Prenumerationen avslutades eftersom data ändrades Ta bort
65800 Prenumerationen avslutades eftersom data ändrades Update
65801 Prenumerationen avslutades eftersom data ändrades Merge
65802 Prenumerationen avslutades eftersom data ändrades Trunkeringstabell
66048 Prenumerationen avslutades eftersom timeout gick ut Odefinierat informationsläge
66315 Prenumerationen avslutades eftersom objektet ändrades objekt eller användare togs bort
66316 Prenumerationen avslutades eftersom objektet ändrades Föremålet ändrades
66565 Prenumerationen avslutades eftersom databasen kopplades bort eller tappades Server eller databas startades om
66571 Prenumerationen avslutades eftersom databasen kopplades bort eller tappades objekt eller användare togs bort
66572 Prenumerationen avslutades eftersom databasen kopplades bort eller tappades Föremålet ändrades
67341 prenumerationen utlöstes på grund av brist på resurser på servern prenumerationen utlöstes på grund av brist på resurser på servern

Följande statuskoder indikerar att en prenumeration inte skapades:

Kod Mindre status Info
132609 Prenumerationsskapandet misslyckades eftersom uttalandet inte stöds Frågan är för komplex
132610 Prenumerationsskapandet misslyckades eftersom uttalandet inte stöds Ogiltigt kontoutdrag för prenumeration
132611 Prenumerationsskapandet misslyckades eftersom uttalandet inte stöds Ogiltiga setalternativ för prenumeration
132612 Prenumerationsskapandet misslyckades eftersom uttalandet inte stöds Ogiltig isoleringsnivå
132622 Prenumerationsskapandet misslyckades eftersom uttalandet inte stöds Används internt
132623 Prenumerationsskapandet misslyckades eftersom uttalandet inte stöds över mallgränsen per tabell

Följande statuskoder används internt och klassificeras som check kill och init-lägen:

Kod Mindre status Info
198656 Används internt: kontrollera kill och init-lägen Odefinierat informationsläge
198928 Prenumerationen förstördes Prenumerationen avslutades eftersom databasen var kopplad
198929 Prenumerationen förstördes Prenumerationen avskedades eftersom användaren tappades
198930 Prenumerationen förstördes Prenumerationen avbröts på grund av en omteckning
198931 Prenumerationen förstördes prenumerationen lades ner
199168 Prenumerationen är aktiv Odefinierat informationsläge
199424 Prenumeration initierad men ännu inte aktiv Odefinierat informationsläge

Permissions

Kräver VIEW SERVER STATE-behörighet på servern.

Note

Om användaren inte har VIEW SERVER STATE-behörighet returnerar denna vy information om prenumerationer som ägs av nuvarande användare.

Behörigheter för SQL Server 2022 och senare

Kräver VIEW SERVER PERFORMANCE STATE behörighet på servern.

Examples

A. Returnera aktiva frågenotifikationsprenumerationer för den nuvarande användaren

Följande exempel returnerar de aktiva frågenotifikationsprenumerationerna för den aktuella användaren. Om användaren har VIEW SERVER STATE-behörigheter returneras alla aktiva prenumerationer på servern.

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

B. Returnera aktiva frågenotifikationsprenumerationer för en specificerad användare

Följande exempel returnerar de aktiva frågenotifikationsprenumerationerna som prenumereras på genom inloggning Ruth0.

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

C. Returnera intern tabellmetadata för prenumerationer på frågeaviseringar

Följande exempel returnerar den interna tabellmetadata för prenumerationer på frågenotifikationer.

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  

Se även

Dynamiska hanteringsvyer och funktioner (Transact-SQL)
Frågeaviseringar relaterade till dynamiska hanteringsvyer (Transact-SQL)
PRENUMERATION PÅ KILL QUERY NOTIFICATION (Transact-SQL)