Sql server 在嵌套事务中发送和接收SQL Server Service Broker消息

Sql server 在嵌套事务中发送和接收SQL Server Service Broker消息,sql-server,service-broker,Sql Server,Service Broker,我想使用SQLServer2008ServiceBroker来记录由存储过程动态创建的长时间运行(最多30分钟)事务的进度。我有两个目标: 1) 要实时记录组成事务的动态创建语句,以便远程监控事务的进度 2) 能够查看组成事务的步骤,直到出现需要回滚的故障 我不能简单地将(或RAISERROR(msg,0,0))打印到控制台,因为我想将进度消息记录到表中(即使存储过程回滚,也要保留该日志) 但我的理解是,在发送线程提交(外部事务)之前,无法从队列接收消息。这是真的吗?如果是,我有哪些选项?在提交

我想使用SQLServer2008ServiceBroker来记录由存储过程动态创建的长时间运行(最多30分钟)事务的进度。我有两个目标:

1) 要实时记录组成事务的动态创建语句,以便远程监控事务的进度

2) 能够查看组成事务的步骤,直到出现需要回滚的故障

我不能简单地将(或RAISERROR(msg,0,0))打印到控制台,因为我想将进度消息记录到表中(即使存储过程回滚,也要保留该日志)


但我的理解是,在发送线程提交(外部事务)之前,无法从队列接收消息。这是真的吗?如果是,我有哪些选项?

在提交事务之前,您确实无法从服务队列读取消息

您可以尝试其他一些方法:

  • 使用sql clr过程将.net远程处理消息发送到接收消息并记录消息的.net应用程序

  • 使用sql clr过程将文本或其他日志文件写入磁盘

  • 其他一些方法

  • 问候


    AJ因非技术原因无法使用CLR。但事实上,这似乎是最好的选择。最后使用NOLOCK提示“偷看”队列中未提交的消息。