1

在我的应用程序的最后一个版本中,我添加了一个命令,告诉它等待服务代理队列中的东西到达

WAITFOR (RECEIVE CONVERT(int, message_body) AS Message FROM MyQueue)

DBA 告诉我,自从添加以来,日志大小已经达到顶峰。这可能是正确的吗?还是我应该去别处寻找?

4

1 回答 1

1

我尚未在服务代理中对此进行测试,但我认为相同的 ACID 合规机制将发挥作用。这取决于它是否在您的代码中打开交易。如果它让一个事务处于打开状态而不提交它,日志将继续增长,直到有东西关闭它,只有在那个时候,它才会最终标记旧区域以供重用。

我还没有在 prod 中推出服务代理,但是我没有包含任何 WAITFOR 的测试/阅读。相反,像 Denny Cherry 这样的服务器代理 MVP 通常会继续查询队列,而不是执行 WAITFOR。

您能否发布一些其他代码并告诉我们您为什么使用 WAITFOR?也许有一些我没有得到的东西,这将是一个很好的用例场景。谢谢!

于 2012-12-17T18:41:30.840 回答