ストアドプロシージャが実行されている間(複数のsetps)、ユーザーの進捗状況のフィードバックを表示したいと考えています。すべてのsqlコードはトランザクションに含まれているため、リアルタイムの更新を取得するためにサービスブローカーを使用しています。私のキューにメッセージがないので、以下のコードで何が間違っているのかを提案できますか?
より良い方法がありますか?Sqlの進捗状況がトランザクションにログインしています
--queue
create queue myQueue
--service
create service myLogs
on queue myQueue ([http://schemas.microsoft.com/SQL/Notifications/PostEventNotification]);
--log handler
create event notification myLogHandler
on server
for userconfigurable_0
to service 'myLogs', 'current database' ;
--message
EXEC master..sp_trace_generateevent @event_class = 82, @userinfo = N'test msg'
---transaction test
begin transaction
EXEC master..sp_trace_generateevent @event_class = 82, @userinfo = N'tran test msg'
rollback transaction
--receive message
declare @message_body xml;
receive top (1) @message_body = message_body
from myQueue
select @message_body
--display queue
select * from myQueue
ありがとう、私は別のデータベースに移動していたと私はそれを逃した:) – witpo
私のテストサーバー(SQL2008R2標準)に上記のコード(enable_broker)で移動しようとしています。私は新しいデータベースを作成する場合、すべてが大丈夫です。しかし、私はそれがすでに既存のdbで動作するようにすることはできません。私はsaアカウントを使用しているので、特権は問題ではありません。主な違いは、照合と互換性のレベルです(2005年と2008年)。互換性レベルを変更しました。違いはありません。助言がありますか? – witpo
何も考えられない。おそらく 'ENABLE_BROKER'は間違いなく設定されていますか?プロファイラを使用しているときにユーザーが設定可能なイベントが発生するのを確認できますか?両方の場合は、可能性がありますすべてのオブジェクトを削除して再度作成しようとします。 –