Сообщения уведомления о запросе
Сообщение уведомления о запросе содержит XML-данные. Каждое сообщение содержит сведения о причинах его создания, а также сообщение уведомления, включенное в процессе создания уведомления.
Атрибуты элемента QueryNotification указывают причину отсылки сообщения, а элемент Message содержит идентификатор уведомления для подписки. Например, следующий XML-документ содержит полное сообщение уведомления о запросе, представленное в удобном для чтения виде.
<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>
Данное сообщение уведомления о запросе содержит сведения о том, что в результате выполнения инструкции INSERT произошло изменение данных подписки: http://mysite.microsoft.com/catalog.aspx?Category=Cars.
Примечание |
|---|
Так как уведомление отсылается в виде XML-документа, то компонент Database Engine заменяет символы, неподдерживаемые данным форматом. Например, если сообщение, переданное вместе с подпиской, содержит символ <, возвращаемый XML преобразует его в символ <. |
В следующей таблице приведены значения каждого атрибута. В SQL Server используются только определенные сочетания атрибутов. Например, поскольку атрибут Type со значением change требует создания подписки, он не может быть использован совместно с атрибутом Source, имеющим значение statement.
Сообщения уведомлений о запросе подразделяются на две основные группы в зависимости от значения атрибута Type. Чтобы указать на изменение результатов запроса, компонент Database Engine создает сообщение типа change. Чтобы уведомить об ошибке запроса подписки, компонент Database Engine создает сообщение типа subscribe. Значения двух других атрибутов указывают точную причину, почему SQL Server создал это сообщение.
Сообщения об изменениях
Если в SQL Server происходит изменение, которое может повлиять на результаты запроса, то создается сообщение типа change. В следующей таблице приведены описания сообщений об изменениях.
Источник |
Сведения |
Описание |
|---|---|---|
data |
truncate |
Одна или несколько таблиц, к которым обращается запрос, были усечены. |
data |
insert |
SQL Server выполнил инструкцию INSERT для одной или нескольких таблиц, указанных в запросе. |
data |
update |
SQL Server выполнил инструкцию UPDATE для одной или нескольких таблиц, указанных в запросе. |
data |
delete |
SQL Server выполнил инструкцию DELETE для одной или нескольких таблиц, указанных в запросе. |
timeout |
none |
Истекло время ожидания подписки. |
object |
drop |
Один из базовых объектов, используемых запросом, был удален. |
object |
alter |
Один из базовых объектов, используемых запросом, был изменен. |
system |
restart |
SQL Server был запущен. |
system |
error |
В SQL Server произошла внутренняя ошибка. |
system |
resource |
Подписка на уведомление была удалена из-за состояния SQL Server, например из-за сильной загруженности сервера. |
Сообщения о подписках
Если SQL Server не может создать подписку, на сервере сразу же создается сообщение типа subscribe. В следующей таблице приведены описания сообщений subscribe.
Источник |
Сведения |
Описание |
|---|---|---|
statement |
query |
Полученная команда содержит инструкцию SELECT, которая не удовлетворяет требованиям уведомления о запросах. |
statement |
invalid |
Полученная команда содержит инструкцию, которая не поддерживает уведомления (например инструкция INSERT или UPDATE). |
statement |
previous invalid |
Предыдущая команда в транзакции содержит инструкцию, которая не поддерживает уведомления (например инструкция INSERT или UPDATE). |
statement |
set options |
При отправке команды неправильно указаны параметры соединения. |
statement |
isolation |
Уровень изоляции недействителен для уведомления о запросе (уровень изоляции SNAPSHOT). |
statement |
query template limit |
Количество внутренних шаблонов в заданной запросом таблице превысило максимально допустимое значение. |
Примечание