Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I messaggi di notifica delle query contengono codice XML. Ogni messaggio include il motivo della creazione del messaggio e il messaggio di notifica incluso al momento della creazione della notifica.
Gli attributi dell'elemento QueryNotification identificano il motivo del messaggio e l'elemento Message contiene l'ID di notifica per la sottoscrizione. Ad esempio, il documento XML illustrato di seguito è un messaggio di notifica delle query completo, riformattato in modo da migliorare la leggibilità:
<qn:QueryNotification
xmlns:qn="https://schemas.microsoft.com/SQL/Notifications/QueryNotification"
Type="change" Source="data" Info="insert">
<qn:Message>http://adventure-works.com/catalog.aspx?Category=Cars</qn:Message>
</qn:QueryNotification>
Il messaggio di notifica delle query seguente indica che un'istruzione INSERT ha modificato i dati per la sottoscrizione con il messaggio http://adventure-works.com/catalog.aspx?Category=Cars.
[!NOTA] Poiché la notifica viene recapitata come documento XML, Motore di database utilizza caratteri di escape per tutti i caratteri non validi in un documento XML. Ad esempio, se il messaggio inoltrato con la sottoscrizione contiene il carattere
<, nel documento XML restituito il carattere viene sostituito con<.
Nelle tabelle seguenti vengono elencati i valori di ogni attributo. SQL Server produce solo alcune combinazioni di attributi. Ad esempio, poiché il valore change dell'attributo Type richiede che la sottoscrizione sia stata creata, il valore change dell'attributo Type non viene mai combinato all'argomento Source con valore statement.
I messaggi di notifica delle query ricadono in due tipi principali, distinti dal valore dell'attributo Type. Per indicare che i risultati della query sono cambiati, Motore di database crea un messaggio di tipo change. Per indicare che la richiesta di sottoscrizione ha avuto esito negativo, Motore di database crea un messaggio di tipo subscribe. I valori degli altri due attibuti indicano il motivo per cui SQL Server ha creato il messaggio.
Messaggi di tipo change
Quando si verifica un cambiamento che può influire sui risultati di una query, SQL Server produce un messaggio di tipo change. Nella tabella seguente vengono illustrati i messaggi di tipo change:
| Source | Info | Descrizione |
|---|---|---|
data |
truncate |
Una o più tabelle a cui viene fatto riferimento nella query sono state troncate. |
data |
insert |
SQL Server ha elaborato un'istruzione INSERT su una o più tabelle a cui viene fatto riferimento nella query. |
data |
update |
SQL Server ha elaborato un'istruzione UPDATE su una o più tabelle a cui viene fatto riferimento nella query. |
data |
delete |
SQL Server ha elaborato un'istruzione DELETE su una o più tabelle a cui viene fatto riferimento nella query. |
timeout |
none |
Il timeout della sottoscrizione è scaduto. |
object |
drop |
Uno degli oggetti sottostanti utilizzati dalla query è stato eliminato. |
object |
alter |
Uno degli oggetti sottostanti utilizzati dalla query è stato modificato. |
system |
restart |
SQL Server è stato avviato. |
system |
error |
Si è verificato un errore interno in SQL Server. |
system |
resource |
La sottoscrizione di notifica è stata eliminata a causa dello stato di SQL Server, ad esempio a causa dell'elevato carico di lavoro di un server. |
Messaggi di tipo subscribe
Quando SQL Server non può creare una sottoscrizione, il server genera immediatamente un messaggio di tipo subscribe. Nella tabella seguente vengono illustrati i messaggi di tipo subscribe:
| Source | Info | Descrizione |
|---|---|---|
statement |
query |
Il comando inviato conteneva un'istruzione SELECT non conforme ai requisiti previsti per la notifica delle query. |
statement |
invalid |
Il comando inviato conteneva un'istruzione che non supporta le notifiche (ad esempio un'istruzione INSERT o UPDATE). |
statement |
previous invalid |
Un comando precedente della transazione conteneva un'istruzione che non supporta le notifiche (ad esempio un'istruzione INSERT o UPDATE). |
statement |
set options |
Al momento dell'invio del comando, le opzioni di connessione non erano configurate in modo appropriato. |
statement |
isolation |
Livello di isolamento non valido per la notifica delle query (livello di isolamento dello snapshot). |
statement |
query template limit |
Una tabella specificata nella query ha raggiunto il numero massimo di modelli interni. |