【问题标题】:SQL Server Broker Service Target Transmission Queue issueSQL Server Broker Service 目标传输队列问题
【发布时间】:2011-08-23 23:13:16
【问题描述】:

我已经在两个不同的实例中实现了两个 SSB。它们是基于异步触发器数据推送模式。

我使用的是SQL Server Enterprise 2008 R2,版本信息如下

我的 SQL 版本是 Microsoft SQL Server Management Studio 10.0.4064.0 Microsoft 分析服务客户端工具 10.0.4064.0 Microsoft 数据访问组件 (MDAC) 6.1.7601.17514 微软 MSXML 3.0 4.0 5.0 6.0 微软 Internet Explorer 9.0.8112.16421 微软 .NET 框架 2.0.50727.5446 操作系统 6.1.7601

  1. 我的队列是 RETENTION 设置为 off

  2. Sender Queue 和 sys.TransmissionQueue

  3. Target Queueempty ,但 Target sys.transmissionqueue 包含 5000 条消息 我 已发送。

  4. 数据在@Target DB中插入锁定。 "当我使用 nolock 选择 时,5000 条记录 会出现"

  5. Profiler显示

@发件人

经纪人:对话STARTED_OUTBOUND

经纪人:Conversation CONVERSING

代理:消息分类

代理:远程消息确认

经纪人:对话组

@接收者

经纪人:对话 DISCONNECTED_OUTBOUND

经纪人:对话组

代理:消息分类

代理:远程消息确认

Broker:Message Undeliverable 由于无法按时发送,此消息已被丢弃。状态:1

  1. SSBDIAGNOSE 显示无错误

我已经使用 Rusanu 的博客条目来解决问题,但我认为我的情况不同!

希望任何人都可以提供帮助:)

【问题讨论】:

  • 发生了什么使消息卡在目标 sys.transmission 队列中?为什么表被锁定?

标签: sql-server sql-server-2008 service-broker


【解决方案1】:

听起来您的目标处理正在接收消息,使用 EndDialog 进行响应,但不提交事务。这将解释您描述的症状(数据已插入但已锁定,目标传输队列有 5k 条消息未发送)。您能否确认目标处理正在正确提交和结束事务?

【讨论】:

  • 是的,Remus,它工作得很好。我忘了在结束对话之后提交。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
相关资源
最近更新 更多