SQL Server の Service Broker が正常に動作しない場合の対処法

Service Broker にメッセージやキューなどを登録したにもかかわらず、正常に処理されない場合の確認と対処方法について記載します。ただ、実際に動作しない原因については多岐にわたる場合がありますので、ここではその一例としてとらえておいてください。

Service Broker 自体が有効かどうか確認
select name, is_broker_enabled from sys.databases
Service Broker を有効にする
alter database [データベース名] set enable_broker with rollback immediate
なんのエラーが発生しているかを確認

最後の列にエラーの理由が載っています。

select * from sys.transmission_queue order by enqueue_time desc
データベースの所有者が正しく設定されているかを確認(null なら設定されていない)
select d.name as 'database', s.name as 'owner'
from sys.databases d
left join sys.server_principals s
  on d.owner_sid = s.sid;

設定されていなければデータベースを右クリックしてプロパティから所有者を設定 (sa とか Administrator とか本来設定されるべきもの)

SQL Server のセキュリティ-ログインに設定しているユーザーと、対象データベースのユーザーが一致しているか

他のサーバーにあったデータベースを復元すると一致していないことが多い

]]>

コメントを残す

メールアドレスが公開されることはありません。