Mensagens de notificação de consulta
Uma mensagem de notificação de consulta contém XML. Cada mensagem inclui a razão pela qual a mensagem foi criada e a mensagem de notificação incluída no momento em que a notificação foi criada.
Os atributos no elemento QueryNotification identificam a razão da mensagem, enquanto o elemento Message contém a ID de notificação da assinatura. Por exemplo, o documento XML mostrado abaixo é uma mensagem de notificação de consulta completa, reformatada para fins de legibilidade:
<qn:QueryNotification
xmlns:qn="https://schemas.microsoft.com/SQL/Notifications/QueryNotification"
Type="change" Source="data" Info="insert">
<qn:Message>http://mysite.microsoft.com/catalog.aspx?Category=Cars</qn:Message>
</qn:QueryNotification>
Esta mensagem de notificação de consulta informa que uma instrução INSERT alterou os dados da assinatura com a mensagem, "http://mysite.microsoft.com/catalog.aspx? Category=Cars".
Observação |
---|
Como a notificação é entregue como um documento XML, o Mecanismo de Banco de Dados ignora caracteres que não são válidos em um documento XML. Por exemplo, se a mensagem enviada com a assinatura contiver o caractere <, o XML retornado ignorará esse caractere para <. |
As tabelas seguintes listam os valores para cada atributo. O SQL Server somente produz algumas combinações de atributos. Por exemplo, como um Tipo de alteração requer que a assinatura tenha sido criada, um Tipo de alteração nunca é combinado com uma Origem de instrução.
Mensagens de notificação de consulta ficam em dois tipos principais, distintos pelo valor do atributo Tipo. Para indicar que os resultados da consulta foram alterados, o Mecanismo de Banco de Dados cria uma mensagem de tipo change. Para indicar que a solicitação de assinatura falhou, o Mecanismo de Banco de Dados cria uma mensagem do tipo subscribe. Os valores dos outros dois atributos indicam a razão exata que o SQL Server criou a mensagem.
Mensagens de alteração
Quando ocorre uma alteração que possa afetar os resultados de uma consulta, o SQL Server produz uma mensagem do tipo alteração. A tabela a seguir descreve as mensagens de alteração.
Origem |
Informações |
Descrição |
---|---|---|
data |
truncate |
Uma ou mais das tabelas mencionadas na consulta estavam truncadas. |
data |
insert |
O SQL Server processou uma instrução INSERT em uma ou mais das tabelas mencionadas na consulta. |
data |
update |
O SQL Server processou uma instrução UPDATE em uma ou mais das tabelas mencionadas na consulta. |
data |
delete |
O SQL Server processou uma instrução DELETE em uma ou mais das tabelas mencionadas na consulta. |
timeout |
none |
O tempo limite da assinatura expirou. |
object |
drop |
Um dos objetos subjacentes usado pela consulta foi cancelado. |
object |
alter |
Um dos objetos subjacentes usado pela consulta foi modificado. |
system |
restart |
O SQL Server foi iniciado. |
system |
error |
Ocorreu um erro interno ocorreu no SQL Server. |
system |
resource |
A assinatura de notificação foi removida por causa da condição do SQL Server, por exemplo, um servidor muito carregado. |
Mensagens de assinatura
Quando o SQL Server não pode criar uma assinatura, o servidor imediatamente produz uma mensagem do tipo subscribe. A tabela a seguir descreve mensagens de subscribe.
Origem |
Informações |
Descrição |
---|---|---|
statement |
query |
O comando enviado continha uma instrução SELECT que não atende aos requisitos de notificação de consulta. |
statement |
invalid |
O comando enviado continha uma instrução que não suporta notificações (por exemplo, INSERT ou UPDATE). |
statement |
previous invalid |
Um comando anterior na transação continha uma instrução que não dá suporte a notificações (por exemplo, INSERT ou UPDATE). |
statement |
set options |
As opções de conexão não foram configuradas adequadamente quando o comando foi enviado. |
statement |
isolation |
O nível de isolamento não foi válido para notificação de consulta (nível de isolamento de SNAPSHOT). |
statement |
query template limit |
Uma tabela especificada na consulta atingiu o número de máximo de modelos internos. |