分享方式:


Broker:Conversation 事件類別

適用於:SQL Server Azure SQL 受控執行個體

SQL Server 會產生 Broker:Conversation 事件,以報告 Service Broker 交談的進度。

Broker:Conversation 事件類別數據行

資料行 類型 描述 Column number 可篩選
ApplicationName nvarchar 與 SQL Server 執行個體建立連線的用戶端應用程式名稱。 此資料行會填入應用程式所傳遞的值,而不是程序顯示的名稱。 10 Yes
ClientProcessID int 主機電腦指派給用戶端應用程式執行中處理序的識別碼。 如果用戶端提供處理序識別碼,這個資料行就會擴展。 9 Yes
DatabaseID int USE 資料庫語句所指定的資料庫 標識碼。 如果未發出USE database語句,則預設資料庫的標識碼。 如果在追蹤中擷取到 ServerName 資料行且伺服器可用,SQL Server Profiler 便會顯示資料庫的名稱。 使用 DB_ID 函式來判斷資料庫的值。 3 Yes
EventClass int 擷取的事件類別類型。 Broker:Conversation為 124 27 No
EventSequence int 此事件的序號。 51 No
EventSubClass nvarchar 事件子類別的類型。 這會提供有關每個事件類別的詳細資訊。 21 Yes
GUID uniqueidentifier 對話框的交談標識碼。 此標識碼會當做訊息的一部分傳輸,並在交談的兩端之間共用。 54 No
HostName nvarchar 執行用戶端的電腦名稱。 這個資料行會在用戶端提供主機名稱時填入。 若要判斷主機名,請使用 HOST_NAME 函式。 8 Yes
IsSystem int 指出事件發生在系統進程或用戶進程上。

0 = 使用者

1 = 系統
60 No
LoginSid image 已登入使用者的安全性識別碼(SID)。 每一個 SID 對於伺服器中的每個登入而言都是唯一的。 41 Yes
MethodName nvarchar 交談所屬的交談群組。 47 No
NTDomainName nvarchar 用戶所屬的 Windows 網域。 7 Yes
NTUserName nvarchar 擁有產生此事件之連線的用戶名稱。 6 Yes
ObjectName nvarchar 對話框的交談句柄。 34 No
優先順序 int 交談的優先順序層級 5 Yes
RoleName nvarchar 交談句柄的角色。 這是 啟動器目標 38 No
ServerName nvarchar 被追蹤的 SQL Server 執行個體名稱。 26 No
嚴重性 int 如果此事件報告錯誤,則為 SQL Server 錯誤嚴重性。 29 No
SPID int SQL Server 指派給與客戶端相關聯之進程的伺服器進程標識碼。 12 Yes
StartTime datetime 事件啟動的時間,可用時。 14 Yes
TextData ntext 交談的目前狀態。 可以有下列其中一個值: 1 Yes
所以。 已啟動輸出。 SQL Server 已處理此交談的 BEGIN CONVERSATION,但尚未傳送任何訊息。
SI. 已啟動輸入。 資料庫引擎 的另一個實例已啟動與目前實例的新交談,但目前實例尚未收到第一則訊息。 如果第一則訊息分散,或 SQL Server 收到順序不依序的訊息,SQL Server 可能會建立處於此狀態的交談。 不過,如果針對交談收到的第一個傳輸包含完整的第一則訊息,SQL Server 可能會以 CO 狀態建立交談。
CO。 交談。 交談已建立,而交談的兩端都可以傳送訊息。 交談處於此狀態時,一般服務的大部分通訊都會發生。
DI. 已中斷連線的輸入。 交談的遠端端已發出 END CONVERSATION。 交談會維持在這個狀態,直到交談的本機端發出 END CONVERSATION 為止。 應用程式仍然可以接收交談的訊息。 由於交談的遠端端已結束交談,因此應用程式無法在此交談上傳送訊息。 當應用程式發出 END CONVERSATION 時,交談會移至 [已關閉] (CD) 狀態。
DO. 已中斷連線的輸出。 交談的本機端已發出 END CONVERSATION。 交談會維持在這個狀態,直到交談的遠端端認可 END CONVERSATION 為止。 應用程式無法傳送或接收交談的訊息。 當交談的遠端端認可 END CONVERSATION 時,交談會移至 [已關閉] (CD) 狀態。
ER。 Error。 此端點上發生錯誤。 [錯誤]、[嚴重性] 和 [狀態] 資料行包含所發生特定錯誤的相關信息。
CD。 閉。 交談端點已不再使用中。
交易識別碼 bigint 系統指派的交易識別碼。 4 No

下表列出這個事件類別的子類別值。

識別碼 子類別 描述
1 SEND 訊息 當 資料庫引擎 執行 SEND 語句時,SQL Server 會產生 SEND 訊息事件。
2 END CONVERSATION 當 資料庫引擎 執行不包含 WITH ERROR 子句的 END CONVERSATION 語句時,SQL Server 會產生 END CONVERSATION 事件。
3 END CONVERSATION WITH ERROR 當 資料庫引擎 執行包含WITH ERROR子句的END CONVERSATION語句時,SQL Server 會產生END CONVERSATION WITH ERROR 事件。
4 Broker 起始的錯誤 每當 Service Broker 建立錯誤訊息時,SQL Server 就會 產生 Broker 起始的錯誤 事件。 例如,當 Service Broker 無法成功路由傳送對話框的訊息時,訊息代理程式會建立對話框的錯誤訊息,併產生此事件。 當應用程式程序結束交談併發生錯誤時,SQL Server 不會產生此事件。
5 終止對話框 Service Broker 終止了對話框。 Service Broker 會終止對話,以回應防止對話繼續但不是錯誤或交談正常結束的條件。 例如,卸除服務會導致 Service Broker 終止該服務的所有對話方塊。
6 已接收的循序訊息 當 SQL Server 收到包含訊息序號的訊息時,SQL Server 會產生 接收的循序 訊息事件類別。 所有使用者定義訊息類型都是循序訊息。 Service Broker 會在兩種情況下產生未佇列的訊息:

Service Broker 所產生的錯誤訊息會取消佇列。

訊息通知可能會取消佇列。 為了提高效率,Service Broker 會將任何可用的通知包含在循序訊息 的一部分。 不過,如果應用程式未在一段特定時間內將循序訊息傳送至遠端端端點,Service Broker 會為訊息認可建立未排序的訊息。
7 已接收的 END CONVERSATION 當 SQL Server 從交談的另一端收到結束對話訊息時,SQL Server 會產生 Received END CONVERSATION 事件。
8 已收到END CONVERSATION WITH ERROR 當 SQL Server 收到來自交談另一端的使用者定義錯誤時,SQL Server 會產生 Received END CONVERSATION WITH ERROR 事件。 當 SQL Server 收到訊息代理程式定義的錯誤時,SQL Server 不會產生這個事件。
9 接收的訊息代理程式錯誤訊息 當 Service Broker 從交談的另一端收到訊息代理程式定義的錯誤訊息時,SQL Server 會產生 Received Broker 錯誤 訊息事件。 當 Service Broker 收到應用程式所產生的錯誤訊息時,SQL Server 不會產生此事件。

例如,如果目前資料庫包含轉送資料庫的預設路由,Service Broker 會將具有未知服務名稱的訊息路由傳送至轉送資料庫。 如果該資料庫無法路由傳送訊息,該資料庫中的訊息代理程式會建立錯誤訊息,並將該錯誤訊息傳回至目前的資料庫。 當目前資料庫從轉送資料庫收到 Broker 產生的錯誤時,目前的資料庫會產生 Received Broker 錯誤訊息 事件。
10 已接收的 END CONVERSATION Ack 當交談的另一 端認可對話或交談這邊傳送的錯誤訊息時,SQL Server 會產生 Received END CONVERSATION Ack 事件類別。
11 BEGIN DIALOG 當 資料庫引擎 執行 BEGIN DIALOG 命令時,SQL Server 會產生 BEGIN DIALOG 事件。
12 建立對話框 當 Service Broker 建立對話框的端點時,SQL Server 會產生 Dialog Created 事件。 不論目前資料庫是啟動器還是對話的目標,Service Broker 都會在建立新對話時建立端點。
13 END CONVERSATION WITH CLEANUP 當 資料庫引擎 執行包含WITH CLEANUP子句的END CONVERSATION語句時,SQL Server 會產生END CONVERSATION WITH CLEANUP 事件。

另請參閱

SQL Server Service Broker