Broker:Conversation 事件类

SQL Server 生成 Broker:Conversation 事件来报告 Service Broker 会话的进度。

中介:会话事件类数据列

数据列 类型 DESCRIPTION 列号 可筛选
ApplicationName nvarchar 创建到 SQL Server 实例连接的客户端应用程序的名称。 此列使用应用程序传递的值而不是程序的显示名称填充。 10 是的
ClientProcessID int 主机分配给运行客户端应用程序的进程的 ID。 如果客户端提供了客户端进程 ID,则填充此数据列。 9 是的
DatabaseID int USE 数据库语句指定的数据库 ID。 如果未发出 USE 数据库语句,则默认数据库的 ID。 如果在跟踪中捕获 ServerName 数据列且服务器可用,SQL Server Profiler 将显示数据库名称。 使用 DB_ID 函数确定数据库的值。 3 是的
EventClass int 捕获的事件类的类型。 始终是 124,用于 Broker:Conversation 二十七
EventSequence int 此事件的序列号。 51
EventSubClass nvarchar 事件子类的类型。 这提供了有关每个事件类的详细信息。 21 是的
GUID uniqueidentifier 对话ID。 此标识符作为消息的一部分传输,并在对话双方之间共享。 54
HostName nvarchar 运行客户端的计算机的名称。 如果客户端提供了主机名,则填充此数据列。 若要确定主机名,请使用 HOST_NAME 函数。 8 是的
IsSystem int 指示事件是发生在系统进程中还是发生在用户进程中。

0 = 用户

1 = 系统
六十
LoginSid image 已登录用户的安全标识号 (SID)。 服务器中的每个登录名都具有唯一的 SID。 41 是的
MethodName nvarchar 会话所属的对话组。 47
NTDomainName nvarchar 用户所属的 Windows 域。 7 是的
NTUserName nvarchar 拥有生成此事件的连接的用户的名称。 6 是的
ObjectName nvarchar 对话框的会话句柄。 34
优先级 int 会话的优先级 5 是的
RoleName nvarchar 会话句柄的角色。 这是 发起者 或者 目标 三十八
ServerName nvarchar 要跟踪的 SQL Server 实例的名称。 26
严重性 int 如果此事件报告错误,则 SQL Server 错误严重性。 二十九
SPID int SQL Server 分配给与客户端关联的进程的服务器进程 ID。 12 是的
StartTime datetime 事件启动的时间(可用时)。 14 是的
TextData ntext 聊天的当前状态。 以下之一:

SO。 已启动出站。 SQL Server 处理了此会话的 BEGIN CONVERSATION,但尚未发送任何消息。

SI. 开始入站 数据库引擎的另一个实例启动与当前实例的新会话,但当前实例尚未收到第一条消息。 如果第一条消息被分割或者 SQL Server 接收到乱序消息,SQL Server 可能会创建处于此状态的会话。 但是,如果为会话收到的第一个传输包含完整的第一条消息,SQL Server 可能会创建处于 CO 状态的会话。

CO。 交谈。 对话已建立,对话双方都可以发送消息。 当会话处于此状态时,典型服务的大多数通信都会发生。

DI. 入站连接已断开。 会话的远程端已发出结束会话指令。 会话将保持此状态,直到会话的本地端发出“END CONVERSATION”命令。 应用程序仍可接收对话的消息。 由于会话的远程端已结束对话,因此应用程序无法在此会话上发送消息。 当应用程序发出 END CONVERSATION 时,会话将变为“已关闭”(CD)状态。

DO. 断开出站连接。 会话的本地端已发出结束会话指令。 对话保持此状态,直到会话的远程端确认结束对话。 应用程序无法发送或接收会话的消息。 当会话的远程端确认结束对话时,会话将移动到“已关闭”(CD)状态。

ER. 错误。 此终结点上发生了错误。 错误、严重性和状态列包含有关发生的特定错误的信息。

CD。 已关闭。 会话终结点不再使用。
1 是的
事务 ID bigint 由系统分配的事务 ID 4

下表列出了此事件类的子类值。

身份证件 子类 DESCRIPTION
1 发送消息 当数据库引擎执行 SEND 语句时,SQL Server 将生成 SEND 消息 事件。
2 结束对话 当数据库引擎执行不包含 WITH ERROR 子句的 END CONVERSATION 语句时,SQL Server 将生成 END CONVERSATION 事件。
3 结束对话时发生错误 当数据库引擎执行包含 WITH ERROR 子句的 END CONVERSATION 语句时,SQL Server 将生成 END CONVERSATION WITH ERROR 事件。
4 代理启动错误 每当 Service Broker 创建错误消息时,SQL Server 将生成 Broker 发起的错误 事件。 例如,当 Service Broker 无法成功路由对话框的消息时,中转站会为对话创建错误消息并生成此事件。 当应用程序程序结束会话并出现错误时,SQL Server 不会生成此事件。
5 终止对话框 Service Broker 终止了对话框。 Service Broker 终止对话以响应阻止对话继续但不是错误或会话正常结束的条件。 例如,删除服务会导致 Service Broker 终止该服务的所有对话。
6 收到的已排序消息 当 SQL Server 收到包含消息序列号的消息时,SQL Server 将生成 Received Sequenced Message 事件类。 所有用户定义的消息类型都是排序消息。 Service Broker 在两种情况下生成未排序的消息:

Service Broker 生成的错误消息是无序的。

消息确认可能没有顺序。 为了提高效率,Service Broker 会将任何可用的确认信息作为排序消息的一部分来处理。 但是,如果应用程序未在特定时间段内将已排序的消息发送到远程终结点,Service Broker 将为消息确认创建未排队的消息。
7 收到结束对话 当 SQL Server 从会话的另一端收到结束对话消息时,SQL Server 将生成 Received END CONVERSATION 事件。
8 收到会话结束,出现错误 当 SQL Server 从会话的另一端收到用户定义的错误时,SQL Server 将生成 Received END CONVERSATION WITH ERROR 事件。 当 SQL Server 收到中转站定义的错误时,SQL Server 不会生成此事件。
9 接收到代理错误消息 当 Service Broker 从会话的另一端收到代理定义的错误消息时,SQL Server 将生成 接收的代理错误消息 事件。 当 Service Broker 收到应用程序生成的错误消息时,SQL Server 不会生成此事件。

例如,如果当前数据库包含转发数据库的默认路由,Service Broker 会将具有未知服务名称的消息路由到转发数据库。 如果该数据库无法路由消息,该数据库中的中转站将创建一条错误消息,并将该错误消息返回到当前数据库。 当当前数据库从转发数据库收到中转站生成的错误时,当前数据库将生成 Received Broker 错误消息 事件。
10 接收到 END CONVERSATION 确认 当会话的另一端确认其已收到由本端发送的结束对话或错误消息时,SQL Server 会生成一个Received END CONVERSATION Ack事件类。
11 开始对话框 当数据库引擎执行 BEGIN DIALOG 命令时,SQL Server 将生成 BEGIN DIALOG 事件。
12 已创建对话框 当 Service Broker 为对话创建终结点时,SQL Server 将生成 对话框创建 事件。 无论当前数据库是发起方还是对话目标,Service Broker 都会在建立新对话时创建终结点。
13 使用 CLEANUP 结束对话 当数据库引擎执行包含 WITH CLEANUP 子句的 END CONVERSATION 语句时,SQL Server 将生成 END CONVERSATION WITH CLEANUP 事件。

另请参阅

SQL Server Service Broker