Condividi tramite


Notifiche query - sys.dm_qn_subscriptions

Si applica a: SQL Server

Restituisce informazioni sulle sottoscrizioni di notifica delle query attive nel server. È possibile utilizzare questa vista per individuare le sottoscrizioni attive nel server o in un database specificato oppure per individuare un'entità server specificata.

Nome colonna Tipo di dati Descrizione
id int ID di una sottoscrizione.
database_id int ID del database in cui la query di notifica viene eseguita. In questo database vengono archiviate le informazioni relative alla sottoscrizione.
sid varbinary(85) ID di sicurezza (SID) dell'entità server che ha creato la sottoscrizione e di cui è proprietaria.
object_id int ID della tabella interna in cui sono archiviate le informazioni sui parametri di sottoscrizione.
created datetime Data e ora di creazione della sottoscrizione.
timeout int Timeout in secondi per la sottoscrizione. La notifica verrà contrassegnata per l'esecuzione non appena è trascorso l'intervallo di tempo specificato.

Nota: il tempo di attivazione effettivo può essere maggiore del timeout specificato. Tuttavia, se una modifica che invalida la sottoscrizione si verifica dopo il timeout specificato, ma prima dell'attivazione della sottoscrizione, SQL Server garantisce che la generazione avvenga al momento in cui è stata apportata la modifica.
status int Indica lo stato della sottoscrizione. Per un elenco dei codici, vedere la tabella in Note.

Cardinalità delle relazioni

Da Per Attivato Type
sys.dm_qn_subscriptions sys.databases database_id Molti-a-uno
sys.dm_qn_subscriptions sys.internal_tables object_id Molti-a-uno

Osservazioni:

Il codice di stato 0 indica uno stato non definito.

I codici di stato seguenti indicano che è stata attivata una sottoscrizione a causa di una modifica:

Codice Stato minore info
65798 La sottoscrizione è stata attivata perché i dati sono stati modificati sottoscrizione attivata dall'inserimento
65799 La sottoscrizione è stata attivata perché i dati sono stati modificati Elimina
65800 La sottoscrizione è stata attivata perché i dati sono stati modificati Update
65801 La sottoscrizione è stata attivata perché i dati sono stati modificati Unione
65802 La sottoscrizione è stata attivata perché i dati sono stati modificati Tronca tabella
66048 La sottoscrizione è stata attivata perché il timeout è scaduto modalità informazioni non definita
66315 La sottoscrizione è stata attivata perché un oggetto è stato modificato oggetto o utente eliminato
66316 La sottoscrizione è stata attivata perché un oggetto è stato modificato oggetto modificato
66565 La sottoscrizione è stata attivata perché il database è stato scollegato o eliminato server o db riavviato
66571 La sottoscrizione è stata attivata perché il database è stato scollegato o eliminato oggetto o utente eliminato
66572 La sottoscrizione è stata attivata perché il database è stato scollegato o eliminato oggetto modificato
67341 la sottoscrizione è stata attivata a causa di mancanza di risorse sul server la sottoscrizione è stata attivata a causa di mancanza di risorse sul server

I codici di stato seguenti indicano che non è stato possibile creare una sottoscrizione:

Codice Stato minore info
132609 La creazione della sottoscrizione non è riuscita perché l'istruzione non è supportata query troppo complessa
132610 La creazione della sottoscrizione non è riuscita perché l'istruzione non è supportata istruzione non valida per la sottoscrizione
132611 La creazione della sottoscrizione non è riuscita perché l'istruzione non è supportata opzioni impostate non valide per la sottoscrizione
132612 La creazione della sottoscrizione non è riuscita perché l'istruzione non è supportata livello di isolamento non valido
132622 La creazione della sottoscrizione non è riuscita perché l'istruzione non è supportata utilizzato internamente
132623 La creazione della sottoscrizione non è riuscita perché l'istruzione non è supportata superato il limite di modelli per tabella

I codici di stato seguenti vengono utilizzati internamente e vengono classificati come modalità di controllo di termine e inizializzazione:

Codice Stato minore info
198656 Utilizzato internamente: modalità di controllo di termine e inizializzazione modalità informazioni non definita
198928 La sottoscrizione è stata eliminata la sottoscrizione è stata attivata perché è stato collegato il database
198929 La sottoscrizione è stata eliminata la sottoscrizione è stata attivata perché l'utente è stato eliminato
198930 La sottoscrizione è stata eliminata la sottoscrizione è stata eliminata a causa di una nuova sottoscrizione
198931 La sottoscrizione è stata eliminata la sottoscrizione è stata terminata
199168 La sottoscrizione è attiva modalità informazioni non definita
199424 La sottoscrizione è stata inizializzata ma non è ancora attiva modalità informazioni non definita

Autorizzazioni

È richiesta l'autorizzazione VIEW SERVER STATE nel server.

Nota

Se l'utente non dispone dell'autorizzazione VIEW SERVER STATE, questa vista restituisce informazioni sulle sottoscrizioni di proprietà dell'utente corrente.

Autorizzazioni per SQL Server 2022 e versioni successive

È richiesta l'autorizzazione VIEW SERVER PERFORMANCE STATE per il server.

Esempi

R. Restituzione delle sottoscrizioni di notifica delle query attive per l'utente corrente

Nell'esempio seguente vengono restituite le sottoscrizioni di notifica delle query attive per l'utente corrente. Se l'utente dispone delle autorizzazioni VIEW SERVER STATE, vengono restituite tutte le sottoscrizioni attive nel server.

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

B. Restituzione delle sottoscrizioni di notifica delle query attive per un utente specificato

Nell'esempio seguente vengono restituite le sottoscrizioni di notifica delle query attive per l'account di accesso Ruth0.

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

C. Restituzione dei metadati delle tabelle interne per le sottoscrizioni di notifica delle query

Nell'esempio seguente vengono restituiti i metadati delle tabelle interne per le sottoscrizioni di notifica delle query.

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  

Vedi anche

Funzioni a gestione dinamica e DMV (Transact-SQL)
Viste a gestione dinamica correlate alle notifiche delle query (Transact-SQL)
KILL QUERY NOTIFICATION SUBSCRIPTION (Transact-SQL)