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)