Partager via


Messages de notifications de requêtes

Un message de notification de requête contient un document XML. Chaque message comprend le motif de sa création et le message de la notification inclus lors de la création de celle-ci.

Les attributs de l'élément QueryNotification identifient le motif du message, tandis que l'élément Message contient l'ID de notification de l'abonnement. Par exemple, le document XML affiché ci-après est un message de notification de requête complet, modifié dans sa forme dans un souci de lisibilité :

<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>

Ce message de notification de requête indique qu'une instruction INSERT a modifié les données de l'abonnement avec le message, "http://mysite.microsoft.com/catalog.aspx?Category=Cars".

[!REMARQUE]

Étant donné que la notification est remise sous la forme d'un document XML, le moteur de base de données associe un caractère d'échappement aux caractères qui ne sont pas valides dans un document XML. Par exemple, si le message soumis avec l'abonnement contient le caractère <, le document XML renvoyé le convertit en &lt;.

Les tableaux suivants répertorient les valeurs de chaque attribut. SQL Server génère uniquement certaines combinaisons d'attributs. Par exemple, étant donné qu'un attribut Type égal à change requiert la création préalable de l'abonnement, cet attribut n'est jamais combiné avec un attribut Source égal à statement.

Les messages de notifications de requêtes appartiennent à deux types principaux, différenciés par la valeur de l'attribut Type. Pour indiquer que les résultats de la requête ont changé, le moteur de base de données crée un message de type change. Pour indiquer que la demande d'abonnement a échoué, le moteur de base de données crée un message de type subscribe. Les valeurs des deux autres attributs indiquent la raison pour laquelle SQL Server a créé le message.

Messages de modification

Lorsqu'une modification susceptible d'affecter les résultats d'une requête se produit, SQL Server génère un message de type change. Le tableau suivant décrit les messages de modification :

Source

Info

Description

data

truncate

Une ou plusieurs des tables référencées dans la requête ont été tronquées.

data

insert

SQL Server a traité une instruction INSERT sur une ou plusieurs des tables référencées dans la requête.

data

update

SQL Server a traité une instruction UPDATE sur une ou plusieurs des tables référencées dans la requête.

data

delete

SQL Server a traité une instruction DELETE sur une ou plusieurs des tables référencées dans la requête.

timeout

none

Le délai d'abonnement a expiré.

object

drop

L'un des objets sous-jacents utilisés par la requête a été supprimé.

object

alter

L'un des objets sous-jacents utilisés par la requête a été modifié.

system

restart

SQL Server a démarré.

system

error

Une erreur interne s'est produite dans SQL Server.

system

resource

L'abonnement à la notification a été supprimé en raison de l'état de SQL Server lié , par exemple, à un serveur affecté par la charge de travail.

Messages d'abonnement

Lorsque SQL Server ne peut pas créer un abonnement, le serveur génère immédiatement un message de type subscribe. Le tableau suivant décrit les messages de type subscribe.

Source

Info

Description

statement

query

La commande soumise contient une instruction SELECT qui ne satisfait pas aux contraintes d'une notification de requête.

statement

invalid

La commande soumise contient une instruction qui ne prend pas en charge les notifications (par exemple, une instruction INSERT ou UPDATE).

statement

previous invalid

Une commande précédente dans la transaction contient une instruction qui ne prend pas en charge les notifications (par exemple, une instruction INSERT ou UPDATE).

statement

set options

Les options de connexion n'ont pas été correctement définies lorsque la commande a été soumise.

statement

isolation

Le niveau d'isolement n'était pas valide pour la notification de requête (niveau d'isolement SNAPSHOT).

statement

query template limit

Une table spécifiée dans la requête a atteint le nombre maximum de modèles internes.

Voir aussi

Concepts