Oznámení o dotazech - sys.dm_qn_subscriptions

platí pro:SQL Server

Vrací informace o odběrech aktivních dotazů na serveru. Tento pohled můžete použít ke kontrole aktivních odběrů na serveru nebo v určené databázi, případně ke kontrole specifického principu serveru.

Název sloupce Datový typ Description
id int Doklad předplatného.
database_id int ID databáze, ve které byl dotaz na oznámení vykonán. Tato databáze uchovává informace týkající se tohoto předplatného.
sid varbinary(85) Bezpečnostní ID serverového principálu, který toto předplatné vytvořil a vlastní jinde.
object_id int ID interní tabulky, která uchovává informace o parametrech předplatného.
Vytvořen datetime Datum a čas, kdy bylo předplatné vytvořeno.
přerušení zápasu int Vypršení předplatného během několika sekund. Oznámení bude po uplynutí této doby označeno jako aktivní.

Poznámka: Skutečný čas výstřelu může být delší než stanovený časový limit. Pokud však změna, která předplatné zneplatní, nastane po specifikovaném časovém limitu, ale před jeho zrušením, SQL Server zajistí, že spuštění proběhne v době, kdy byla změna provedena.
Stav int Označuje stav předplatného. Viz tabulka pod poznámkami pro seznam kódů.

Kardinální vztahy

Od To Na Typ
sys.dm_qn_subscriptions sys.databases database_id Many-to-one
sys.dm_qn_subscriptions sys.internal_tables object_id Many-to-one

Poznámky

Stavový kód 0 označuje nedefinovaný stav.

Následující stavové kódy označují, že předplatné bylo zrušeno kvůli změně:

Code Status nezletilých Informace
65798 Předplatné zrušeno, protože se změnila data Předplatné spuštěné vložením
65799 Předplatné zrušeno, protože se změnila data Vymazat
65800 Předplatné zrušeno, protože se změnila data Aktualizovat
65801 Předplatné zrušeno, protože se změnila data Merge
65802 Předplatné zrušeno, protože se změnila data Tabulka zkrácení
66048 Předplatné zrušeno, protože vypršel timeout Nedefinovaný informační režim
66315 Předplatné zrušeno, protože se změnil objekt objekt nebo uživatel byl vypuštěn
66316 Předplatné zrušeno, protože se změnil objekt objekt byl upraven
66565 Předplatné bylo zrušeno, protože databáze byla odpojena nebo zrušena Server nebo databáze restartovány
66571 Předplatné bylo zrušeno, protože databáze byla odpojena nebo zrušena objekt nebo uživatel byl vypuštěn
66572 Předplatné bylo zrušeno, protože databáze byla odpojena nebo zrušena objekt byl upraven
67341 Předplatné bylo spuštěno kvůli nedostatku zdrojů na serveru Předplatné bylo spuštěno kvůli nedostatku zdrojů na serveru

Následující stavové kódy naznačují, že předplatné nebylo vytvořeno:

Code Status nezletilých Informace
132609 Vytvoření předplatného selhalo, protože příkaz není podporován Dotaz je příliš složitý
132610 Vytvoření předplatného selhalo, protože příkaz není podporován Neplatné prohlášení pro předplatné
132611 Vytvoření předplatného selhalo, protože příkaz není podporován Možnosti neplatných sad pro předplatné
132612 Vytvoření předplatného selhalo, protože příkaz není podporován Neplatná úroveň izolace
132622 Vytvoření předplatného selhalo, protože příkaz není podporován Interně používané
132623 Vytvoření předplatného selhalo, protože příkaz není podporován nad limitem šablony na tabulku

Následující stavové kódy se používají interně a jsou klasifikovány jako režimy check kill a init:

Code Status nezletilých Informace
198656 Použití interně: zkontrolovat kill a init módy Nedefinovaný informační režim
198928 Předplatné bylo zničeno Předplatné bylo zrušeno, protože byla připojena databáze
198929 Předplatné bylo zničeno Předplatné bylo zrušeno, protože uživatel byl odstraněn
198930 Předplatné bylo zničeno Předplatné bylo zrušeno kvůli opětovnému předplatnému
198931 Předplatné bylo zničeno Subscription byl zabit
199168 Předplatné je aktivní Nedefinovaný informační režim
199424 Předplatné inicializováno, ale ještě není aktivní Nedefinovaný informační režim

Povolení

Vyžaduje VIEW oprávnění SERVER STATE na serveru.

Note

Pokud uživatel nemá VIEW oprávnění SERVER STATE, tento pohled vrátí informace o odběrech vlastněných současným uživatelem.

Oprávnění pro SQL Server 2022 a novější

Vyžaduje VIEW oprávnění SERVER PERFORMANCE STATE na serveru.

Examples

A. Vraťte odběry aktivních dotazů pro aktuálního uživatele

Následující příklad vrací odběry aktivních dotazů aktuálního uživatele. Pokud má uživatel VIEW oprávnění SERVER STATE, všechna aktivní odběrová na serveru se vrátí.

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

B. Vrácení odběrů aktivních oznámení o dotazech pro určeného uživatele

Následující příklad vrací odběry aktivních dotazů oznámení, která byla přihlášena .Ruth0

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

C. Vrácení interních metadat tabulek pro odběry oznámení o dotazech

Následující příklad vrací interní metadata tabulek pro odběry notifikací dotazů.

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