MSSQL 2008R2 Service Broker 发起程序队列中充满了旧对话

MSSQL 2008R2 Service Broker 发起程序队列中充满了旧对话

我的启动器队列中充满了大约 1800 万条 EndDialog 或 Error message_type_name 的旧消息。

显然,我用来设置内部激活的 Microsoft 示例代码(http://msdn.microsoft.com/en-us/library/cc281517.aspx) 没有包括在发起方结束对话的步骤(我读到过,这被称为“Fire and Forget”)。

我很疑惑,因为我的 sysdercv 和其他服务代理相关表现在已经达到了两位数的千兆字节:我该如何摆脱这些旧消息?

到目前为止,我已尝试对几千个运行 END CONVERSATION,但没有看到这些系统表的大小有任何变化。

此外,我怎样才能改变启动器服务/队列以便将来自动结束对话?

编辑:我应该提到,尽管越来越多的消息通过管道,但至少半小时内我没有看到这些系统表中的任何一个改变大小。

答案1

实际上,您提到的教程确实从两端发出了 END CONVERSATION。因此它不会受到“发射后不管”模式的影响。但是,第一个 END CONVERSATION(发起方)是从查询窗口手动发出的,这不太实用。在生产中,您可能希望在两端都有一个激活的程序 - 发起方的程序将收到目标的回复并结束对话(如果您想遵循教程中的消息交换方案)。

相关内容