sys.dm_qn_subscriptions (Transact-SQL)
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
È possibile che l'ora di esecuzione effettiva sia maggiore del timeout specificato. Se, tuttavia, si verifica una modifica che invalida la sottoscrizione dopo il timeout specificato ma prima dell'esecuzione della sottoscrizione, SQL Server fa sì che l'esecuzione si verifichi in corrispondenza dell'ora in cui viene apportata la modifica.
|
status |
int |
Indica lo stato della sottoscrizione. Per un elenco dei codici, vedere la tabella in Note. |
Cardinalità delle relazioni
Da |
A |
In |
Tipo |
---|---|---|---|
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 |
eliminazione |
65800 |
La sottoscrizione è stata attivata perché i dati sono stati modificati |
aggiornamento |
65801 |
La sottoscrizione è stata attivata perché i dati sono stati modificati |
unione |
65802 |
La sottoscrizione è stata attivata perché i dati sono stati modificati |
troncamento di 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.
Esempi
A. 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