如何管理对话框重用和对话寿命?

时间:2018-10-03 20:30:54

标签: sql-server service-broker

我使用@RemusRusanu的Service Broker博客示例来解决一些类似ETL的问题。运作良好。我知道在对话对话中不设置LIFETIME属性可能会导致DB意外增长,直到达到Int32.Max秒等待时间,这才释放与陈旧对话相关的DB对象。为LIFETIME属性设置较低的值将有助于释放资源。

但是我该如何使用表模式(例如为每个DB对话存储对话GUID)来处理RR的对话框重用技术,同时设置一些LIFETIME属性?据我所不知道的超时时间,预期的缺点将是下次我查询表以获取同一数据库的对话框ID时,盲目地重用已结束的对话,这显然会引发一些异常。

是否可以(轻松地)通知会话LIFETIME超时事件,所以我可以自己处理从表中删除对话框记录的问题?

感谢分享。

让·伊夫斯

1 个答案:

答案 0 :(得分:0)

我使用相同的技术,并且我不担心(带符号的)int的最大值过期之前需要经过大约70年(!!)。我肯定会在发生的时候死掉,而且数据库也可能会死。

也就是说,我最近考虑过设置生命周期。我将如何设置代理程序作业,以检测某些对话即将到期,并很快建立新的对话来替换它们。这些新句柄之一被验证为可以正常工作,请在旧句柄上调用END CONVERSATION