1

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

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

2) 能够审查组成事务的步骤,直至可能发生故障需要回滚。

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

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

4

1 回答 1

0

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

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

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

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

  3. 还有一些方法...

问候

阿杰

于 2011-03-31T09:48:46.623 回答