Broker:Conversation 事件類別

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

Broker:Conversation 事件類別資料行

資料行

類型

描述

資料行編號

可篩選

ApplicationName

nvarchar

建立 SQL Server 執行個體之連接的用戶端應用程式名稱。這個資料行會填入應用程式所傳送的值,而非程式的顯示名稱。

10

ClientProcessID

int

主機電腦指派給用戶端應用程式執行中處理序的識別碼。這個資料行在用戶端提供用戶端處理序識別碼時填入。

9

DatabaseID

int

USE database 陳述式指定之資料庫的識別碼。如果未發出 USE database 陳述式,則為預設資料庫的識別碼。如果在追蹤內擷取 Server Name 資料行,而且伺服器為可用,則 SQL Server Profiler 會顯示資料庫的名稱。請使用 DB_ID 函數決定資料庫的值。

3

EventClass

int

擷取的事件類別類型。Broker:Conversation 永遠為 124

27

EventSequence

int

此事件的序號。

51

EventSubClass

nvarchar

事件子類別的類型。這會提供有關每一個事件類別的詳細資訊。

21

GUID

uniqueidentifier

對話的交談識別碼。此識別碼會當作訊息的一部份傳送,而且在兩端的交談之間共用。

54

HostName

nvarchar

用戶端執行時所在的電腦之名稱。這個資料行會在用戶端提供主機名稱時填入。若要決定主機名稱,請使用 HOST_NAME 函數。

8

IsSystem

int

指出事件是發生在系統處理序或使用者處理序。

0 = 使用者

1 = 系統

60

LoginSid

image

已登入之使用者的安全性識別碼 (SID)。伺服器上的每一個登入之 SID 是唯一的。

41

MethodName

nvarchar

交談所屬的交談群組。

47

NTDomainName

nvarchar

使用者所隸屬的 Windows 網域。

7

NTUserName

nvarchar

擁有產生此事件之連接的使用者名稱。

6

ObjectName

nvarchar

對話的交談控制代碼。

34

Priority

int

交談的優先權等級。

5

RoleName

nvarchar

交談控制代碼的角色。不是「起始端」就是「目標」

38

ServerName

nvarchar

所追蹤的 SQL Server 執行個體名稱。

26

Severity

int

SQL Server 錯誤嚴重性,如果此事件報告錯誤的話。

29

SPID

int

由 SQL Server 指派給用戶端相關之處理序的伺服器處理序識別碼。

12

StartTime

datetime

事件啟動的時間 (如果有的話)。

14

TextData

ntext

交談的目前狀態。它有下列幾種:

  • SO (已開始輸出)。SQL Server 已處理此交談的 BEGIN CONVERSATION,但尚未傳送任何訊息。

  • SI (已開始傳入)。另一個執行個體已經與 SQL Server 開始新交談,但SQL Server 尚未完成接收第一個訊息。另一個 Database Engine 執行個體啟動了與目前執行個體的新交談,但是目前的執行個體尚未完成第一個訊息的接收動作。如果第一個訊息被分割或者 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。錯誤。在此端點上發生錯誤。錯誤、嚴重性和狀態資料行包含有關發生之特定錯誤的資訊。

  • CD。已關閉。交談端點已不再使用。

1

Transaction ID

bigint

系統指派的交易識別碼。

4

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

ID

子類別

描述

1

SEND Message

當 Database Engine 執行 SEND 陳述式時,SQL Server 就會產生 SEND Message 事件。

2

END CONVERSATION

當 Database Engine 執行未包括 WITH ERROR 子句的 END CONVERSATION 陳述式時,SQL Server 就會產生 END CONVERSATION 事件。

3

END CONVERSATION WITH ERROR

當 Database Engine 執行包括 WITH ERROR 子句的 END CONVERSATION 陳述式時,SQL Server 就會產生 END CONVERSATION 事件。

4

Broker Initiated Error

每當 Service Broker 建立錯誤訊息時,SQL Server 就會產生 Broker Initiated Error 事件。例如,當 Service Broker 未能成功地路由傳送對話的訊息時,Broker 會針對該對話建立一個錯誤訊息,並產生此事件。如果應用程式結束交談時發生錯誤,SQL Server 並不會產生此事件。

5

Terminate Dialog

Service Broker 會結束此對話。對於無法繼續使用對話的情況 (但並不是錯誤或正常結束交談的情況),Service Broker 會終止對話來加以回應。例如,卸除服務會導致 Service Broker 終止該項服務的所有對話。

6

Received Sequenced Message

當 SQL Server 收到包含訊息序號的訊息時,SQL Server 就會產生 Received Sequenced Message 事件類別。所有使用者定義的訊息類型都是循序訊息。Service Broker 會在兩個情況下產生非循序訊息:

  • 由 Service Broker 產生的錯誤訊息即非循序。

  • 訊息收條可能為非循序。為了提高效率,Service Broker 會將任何可用的收條當做循序訊息的一部分併入訊息中。但是,如果應用程式未能在某一段時間內,將循序訊息傳送到遠端端點,Service Broker 就會為訊息收條建立非循序訊息。

7

Received END CONVERSATION

當 SQL Server 收到交談另一端的「結束對話」訊息時,SQL Server 就會產生 Received END CONVERSATION 事件。

8

Received END CONVERSATION WITH ERROR

當 SQL Server 從交談的另一端收到使用者定義的錯誤時,SQL Server 會產生 Received END CONVERSATION WITH ERROR 事件。當 SQL Server 收到 Broker 定義的錯誤時,SQL Server 並不會產生這個事件。

9

Received Broker Error Message

當 Service Broker 收到來自交談另一端的 Broker 定義錯誤訊息時,SQL Server 就會產生 Received Broker Error Message 事件。當 Service Broker 收到由應用程式產生的錯誤訊息時,SQL Server 並不會產生此事件。

例如,如果目前的資料庫包含轉寄資料庫的預設路由,Service Broker 會以未知的服務名稱將訊息路由傳送到轉寄資料庫。如果那個資料庫無法路由訊息,則資料庫中的 Broker 就會建立錯誤訊息,然後將該錯誤訊息傳回目前的資料庫。當目前的資料庫從轉寄資料庫收到 Broker 產生的錯誤,目前的資料庫就會產生 Received Broker Error Message 事件。

10

Received END CONVERSATION Ack

當交談另一端認可由交談這一端傳送的「結束對話」或「錯誤」訊息時,SQL Server 就會產生 Received END CONVERSATION Ack 事件類別。

11

BEGIN DIALOG

當 Database Engine 執行 BEGIN DIALOG 命令時,SQL Server 就會產生 BEGIN DIALOG 事件。

12

Dialog Created

當 Service Broker 為對話建立端點時,SQL Server 會產生 Dialog Created 事件。每當建立新的對話時,Service Broker 就會建立一個端點,不論目前的資料庫是否為該對話的起始端或目標。

13

END CONVERSATION WITH CLEANUP

當 Database Engine 執行包括 WITH CLEANUP 子句的 END CONVERSATION 陳述式時,SQL Server 就會產生 END CONVERSATION WITH CLEANUP 事件。