Broker:Conversation 事件类
SQL Server 生成 Broker:Conversation 事件来报告 Service Broker 会话的进度。
Broker:Conversation 事件类的数据列
数据列 | 类型 | 描述 | Column number | 可筛选 |
---|---|---|---|---|
ApplicationName | nvarchar | 客户端应用程序的名称,该客户端应用程序创建了指向 SQL Server 实例的连接。 该列由应用程序传递的值填充,而不是由所显示的程序名填充。 | 10 | 是 |
ClientProcessID | int | 由主机分配给正在运行客户端应用程序的进程的 ID。 如果客户端提供了客户端进程 ID,则填充此数据列。 | 9 | 是 |
DatabaseID | int | 由 USE database 语句指定的数据库的 ID。 如果未发出 USE database语句,则为默认数据库的 ID。 如果在跟踪中捕获 ServerName 数据列且服务器可用,SQL Server Profiler 将显示数据库名称。 可使用 DB_ID 函数来确定数据库的值。 | 3 | 是 |
EventClass | int | 捕获的事件类的类型。 对于 Broker:Conversation ,始终为 124。 | 27 | 否 |
EventSequence | int | 此事件的序列号。 | 51 | 否 |
EventSubClass | nvarchar | 事件子类的类型。 它提供了有关每个事件类的详细信息。 | 21 | 是 |
GUID | uniqueidentifier | 对话的会话 ID。 此标识符将作为消息的一部分进行传输,并在会话双方之间共享。 | 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 | 否 |
优先级 | int | 会话的优先级 | 5 | 是 |
RoleName | nvarchar | 会话句柄的角色。 这可以是 initiator 或 target。 | 38 | 否 |
ServerName | nvarchar | 正在跟踪的 SQL Server 实例的名称。 | 26 | 否 |
严重性 | int | 如果此事件报告错误,则 SQL Server 错误严重性。 | 29 | 否 |
SPID | int | SQL Server 分配给与客户端关联的进程的服务器进程 ID。 | 12 | 是 |
StartTime | datetime | 该事件的启动时间(如果可用)。 | 14 | 是 |
TextData | ntext | 会话的当前状态。 可以是下列值之一: | 1 | 是 |
SO。 已开始出站。 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、Severity 和 State 列中包含与发生的具体错误有关的信息。 | ||||
CD。 已关闭。 会话端点不再使用。 | ||||
事务 ID | bigint | 系统为事务分配的 ID。 | 4 | 否 |
下表列出了此事件类的子类值。
ID | 子类 | 说明 |
---|---|---|
1 | SEND Message | 当数据库引擎执行 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 Initiated Error | 每当 Service Broker 创建错误消息时,SQL Server 将 生成 Broker 发起的错误 事件。 例如,当 Service 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 收到中转站定义的错误时,SQL Server 不会生成此事件。 |
9 | Received Broker Error Message | 当 Service Broker 从会话的另一端收到中转站定义的错误消息时,SQL Server 将 生成 Received Broker 错误消息 事件。 当 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 | 当数据库引擎执行 BEGIN DIALOG 命令时,SQL Server 将生成 BEGIN DIALOG 事件。 |
12 | Dialog Created | 当 Service Broker 为对话创建终结点时,SQL Server 将 生成对话框创建 事件。 无论当前数据库是发起方还是对话目标,Service Broker 都会在建立新对话时创建终结点。 |
13 | END CONVERSATION WITH CLEANUP | 当数据库引擎执行包含 WITH CLEANUP 子句的 END CONVERSATION 语句时,SQL Server 将生成 END CONVERSATION WITH CLEANUP 事件。 |