2011-03-15 97 views
1

我想使用SQL Server 2008 Service Broker記錄由存儲過程動態創建的長時間運行(最多約30分鐘)事務的進度。我有兩個目標:在嵌套事務中發送和接收SQL Server Service Broker消息

1),以獲得動態創建語句組成的事務,使交易的完工進度能夠遠程監控的實時記錄,

2)爲了能夠請查看組成事務的步驟,直到發生故障並需要回滾爲止。

我不能簡單地向控制檯打印(或RAISERROR(msg,0,0)),因爲我想將進度消息記錄到表中(即使存儲過程回滾也保留該日誌)。

但我的理解是,直到發送線程提交(外部事務)才能從隊列中接收消息。這是真的?如果是這樣,我有什麼選擇?

回答

0

在提交事務之前,您無法從服務隊列中讀取消息。

你可以嘗試一些其他的方法:

  1. 使用SQL CLR程序發送一個.NET遠程處理消息,接收消息的.net應用程序,並將它們記錄它們。

  2. 使用sql clr過程將文本或其他日誌文件寫入磁盤。

  3. 一些其他的方法...

問候

AJ

+0

不能使用非技術原因CLR。但是,的確,這似乎是最好的選擇。通過使用NOLOCK提示,結束對隊列中未提交的消息的「窺視」。 – Emmanuel 2011-03-31 10:53:38