查询通知消息

查询通知消息包含 XML。每个消息都包括创建该消息的原因和创建通知时包括的通知消息。

QueryNotification 元素上的属性标识消息的原因,而 Message 元素包含订阅的通知 ID。例如,以下所显示的 XML 文档是完整的查询通知消息(为确保可读性重新格式化了该文档):

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

此查询通知消息报告了 INSERT 语句使用消息 (http://adventure-works.com/catalog.aspx?Category=Cars) 更改了订阅的数据。

ms189308.note(zh-cn,SQL.90).gif注意:
由于该通知是被作为 XML 文档传递的,因此数据库引擎将转义在 XML 文档中无效的字符。例如,如果与订阅一起提交的消息包含字符 <,则返回的 XML 会将此字符转义为 &lt;

下表列出了每个属性的值。SQL Server 只生成某些属性组合。例如,由于 changeType 要求创建订阅,因此,changeType 不能与 statementSource 组合。

根据 Type 属性的值进行区分,查询通知消息可分为两个主要类型。若要指明查询的结果已经更改,数据库引擎将创建 change 类型的消息。若要指明订阅请求失败,数据库引擎将创建 subscribe 类型的消息。另两个属性的值将指明 SQL Server 创建消息的确切原因。

更改消息

当进行可能影响查询结果的更改时,SQL Server 将生成 change 类型的消息。下表将说明了更改消息:

来源 信息 说明

数据

截断

查询中引用的一个或多个表被截断。

数据

insert

SQL Server 已对查询中引用的一个或多个表应用了 INSERT 语句。

数据

update

SQL Server 已对查询中引用的一个或多个表应用了 UPDATE 语句。

数据

delete

SQL Server 已对查询中引用的一个或多个表应用了 DELETE 语句。

超时

订阅超时时间已到。

对象

drop

该查询所使用的基本对象之一已被删除。

对象

更改

该查询所使用的基本对象之一已被修改。

system

重新启动

启动了 SQL Server。

system

错误

在 SQL Server 中发生了内部错误。

system

资源

由于 SQL Server 的状态(例如负荷很重的服务器),删除了通知订阅。

订阅消息

当 SQL Server 不能创建订阅时,服务器将立即生成 subscribe 类型的消息。下表说明了 subscribe 消息。

来源 信息 说明

statement

查询

已提交的命令包含不能满足查询通知要求的 SELECT 语句。

statement

无效

已提交命令包含不支持通知的语句(例如 INSERT 或 UPDATE)。

statement

以前的无效

在事务中的以前的命令包含不支持通知的语句(例如 INSERT 或 UPDATE)

statement

设置选项

提交命令时,没有适当地设置连接选项。

statement

隔离

隔离级别对于查询通知无效(SNAPSHOT 隔离级别)。

statement

查询模板限制

查询中指定的表已经达到内部模板的最大数目。

请参阅

其他资源

Using XML Schemas

帮助和信息

获取 SQL Server 2005 帮助