小编use*_*937的帖子

如果目标重新启动,则不会发送Service Broker消息

从高层次来看,这是正在发生的事情:

  1. 我们有两个SQL Server 2008 R2 SP1系统(Windows NT 6.1上的标准版(Build 7601:Service Pack 1)).它们很好地哼唱,双向通信,没有错误或问题.
  2. 我们重启系统#2,期望在它不可用时发送给它的任何Service Broker消息将在系统#1上排队,直到系统#2重新启动.
  3. 系统#2重新启动,一切都正常启动,没有错误.
  4. 在系统#1上为系统#2排队的消息仍然排队等候; 它们永远不会被发送.此外,该对话的新消息也会排队,永远不会发送.
  5. 在新会话上发送的消息传输得很好.

有关从未发送过的消息的详细信息:

A.当系统#2关闭时,队列中消息的transmission_status显示各种错误,表明它无法按预期与系统#2通信.

B.在系统#2重新启动后不久,这些消息的transmit_status变为空白.在此之后,空白状态永远不会改变.

C.消息堆叠的对话处于CONVERSING/CO状态.系统视图中没有列表示与其他正常工作的队列有任何不同.(如果我能找到不同的标志,我会知道终止糟糕的会话,但系统没有提供任何线索 - 除了不断增长的队列深度.)

D.从未在系统#2上收到消息,因为永远不会为这些消息调用我的激活存储过程.

E.在Profiler中(打开所有Broker跟踪类型),一个好的对话显示这些事情被记录:

Broker:Conversation CONVERSING  1 - SEND Message        Initiator                                       
Broker:Message Classify 2 - Remote  Initiator
[SQL Batch complete; SQL that caused the SEND to occur]
Broker:Remote Message Acknowledgement   1 - Message with Acknowledgement Sent   Initiator
Broker:Message Classify     1 - Local   Initiator
Broker:Conversation CONVERSING  6 - Received Sequenced Message  Target
Broker:Remote Message Acknowledgement   3 - Message with Acknowledgement …
Run Code Online (Sandbox Code Playgroud)

sql-server service-broker

35
推荐指数
1
解决办法
2731
查看次数

标签 统计

service-broker ×1

sql-server ×1