共用方式為


查詢通知訊息

查詢通知訊息包含 XML。每個訊息會包含建立該訊息的原因,以及要在通知建立時併入的通知訊息。

Message 元素包含訂閱的通知識別碼時,QueryNotification 元素的屬性就可以識別訊息的原因。例如,以下顯示的 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-tw,SQL.90).gif附註:
因為是以 XML 文件傳遞通知,所以 Database Engine 逸出字元在 XML 文件中無效。例如,如果以訂閱提交的訊息包含字元 <,傳回的 XML 會將此字元逸出為 &lt;

下表列出每個屬性的值。SQL Server 只會產生特定的屬性組合。例如,因為 changeType 必須要已經建立訂閱,所以 changeType 從不會與 statementSource 結合。

查詢通知訊息分成兩個主要類型,以 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 的訊息。下表描述**「訂閱」**訊息:

來源 資訊 描述

statement

query

已提交的命令包含不符合查詢通知需求的 SELECT 陳述式。

statement

invalid

已提交的命令包含不支援通知的陳述式 (例如 INSERT 或 UPDATE)。

statement

previous invalid

交易中的前一個命令包含不支援通知的陳述式 (例如 INSERT 或 UPDATE)。

statement

set options

提交命令時,並未正確設定連接選項。

statement

isolation

隔離層級對查詢通知而言無效 (SNAPSHOT 隔離層級)。

statement

query template limit

查詢中指定的資料表已達到內部範本的最大數目。

請參閱

其他資源

Using XML Schemas

說明及資訊

取得 SQL Server 2005 協助