Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 代理队列-将中毒消息移动到表_Sql_Sql Server_Queue_Service Broker - Fatal编程技术网

Sql 代理队列-将中毒消息移动到表

Sql 代理队列-将中毒消息移动到表,sql,sql-server,queue,service-broker,Sql,Sql Server,Queue,Service Broker,目前,我有一个队列,存储从队列中读取后运行的合并查询。这一切都很好,目前,如果合并出现错误,队列将被禁用,我必须手动删除消息(或修复合并,原样) 我想知道是否可以简单地将中毒信息移动到一张桌子上?队列运行重要的(不同的)合并,这些合并必须持续运行,以确保数据得到更新。比如说,队列在一夜之间变得无法工作,并积累了大量的积压工作,这对我来说是不利的 我有没有办法把这个坏消息推到桌子上?我自己也尝试过这样做,但最终我在事务中遇到了一个TRY…CATCH,它无论如何都会对错误执行回滚(因此调用5次回滚以

目前,我有一个队列,存储从队列中读取后运行的合并查询。这一切都很好,目前,如果合并出现错误,队列将被禁用,我必须手动删除消息(或修复合并,原样)

我想知道是否可以简单地将中毒信息移动到一张桌子上?队列运行重要的(不同的)合并,这些合并必须持续运行,以确保数据得到更新。比如说,队列在一夜之间变得无法工作,并积累了大量的积压工作,这对我来说是不利的

我有没有办法把这个坏消息推到桌子上?我自己也尝试过这样做,但最终我在事务中遇到了一个TRY…CATCH,它无论如何都会对错误执行回滚(因此调用5次回滚以禁用规则)。大多数在线解决方案仅提及手动删除邮件

有什么建议吗?这只是个坏主意吗?若然,原因为何


谢谢。

通过在CREATE/ALTER QUEUE语句中将POINTION\u MESSAGE\u HANDING status设置为off,可以关闭5次后禁用回滚。然后可以使用TRY…CATCH手动处理失败的事务


和你一样,我也不觉得这个功能很有用,所以在我的应用程序中几乎总是关闭它,并以任何看起来最好的方式处理问题消息。

谢谢你的回复。我很喜欢它在出现严重错误时作为一种保护措施的作用,但你是对的,我可能不得不关闭它,以便自己处理错误。