在高层,这里是发生了什么事情: 我们有两个SQL Server 2008 R2 SP1系统(Windows NT 6.1(Build 7601:Service Pack 1)上的标准版)它们嗡嗡声很好,双向通信,没有任何错误或问题。 我们重启系统#2,期望任何发送给它的Service Broker消息不可用时都会在系统#1上排队,直到系统#2恢复。 系统#2恢复正常,没有任何错误。 系统#2在系统#1上排队的消息保持排队; 他们永远不会被发送。 此外,该对话中的新消息也排队等待,不会被发送。 在新会话中发送的消息传输得很好。 有关从未发送的消息的详细信息: A.当系统#2closures时,队列中的消息的transmission_status显示出各种错误,表示它不能与系统#2进行通信。 B.系统#2恢复之后不久,这些消息的传输状态变为空白。 此后空白状态不会改变。 C.消息堆叠的对话处于CONVERSING / CO状态。 系统视图中没有列表示与其他正在工作的队列没有任何区别。 (如果我能find任何设置不同的标志,我会知道终止这个不好的对话,但系统不提供线索 – 除了不断增长的队列深度。 D.在系统#2上从来没有接收到这些消息,因为我的激活存储过程从来不会被这些消息调用。 E.在Profiler中(打开所有Broker跟踪types),一个良好的对话显示这些事情被logging: 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 […]
我有一个Microsoft SQL服务器2005年,我试图使用这些T-SQL为我的数据库启用代理: SELECT name, is_broker_enabled FROM sys.databases — checking its status 0 in my case ALTER DATABASE myDatabase SET ENABLE_BROKER 修改Alter Database需要很长时间来处理。 现在已经过了半个小时了,还在运行。 不知道是否正在等待其他事情,或者我必须先清理任何东西,比如删除服务代理下的所有消息,合同,队列和服务?