トラブルシューティング ツール (Service Broker)

Service Broker には、構成とメッセージ交換の問題を診断するツールがいくつか用意されています。

Service Broker はデータベース エンジンのコンポーネントです。そのため、データベース エンジンの多くのツールを Service Broker の問題の診断にも使用できます。詳細については、「トラブルシューティング ツール (データベース エンジン)」を参照してください。

ssbdiagnose ユーティリティ

ssbdiagnose ユーティリティは、エラーに関して、Service Broker サービスと実行中のメッセージ交換の構成を分析します。ssbdiagnose を使用すると、次の操作を実行できます。

  • 新しく構成された Service Broker アプリケーションに構成エラーがないことを確認します。

  • 既存の Service Broker アプリケーションの構成を変更した後に構成エラーがないことを確認します。

  • Service Broker データベースをデタッチしてからデータベース エンジンのインスタンスに再アタッチした後に構成エラーがないことを確認します。

  • サービス間のメッセージの転送を妨げるエラーを特定します。

このユーティリティの使用方法の詳細については、「ssbdiagnose ユーティリティ」を参照してください。

Service Broker の転送キュー

受信側のキューに正常に転送されない Service Broker メッセージは、送信側のデータベースの Service Broker 転送キューで保持されます。各データベースの sys.transmission_queue システム ビューを使用すると、キューに保持されているこのメッセージを確認できます。転送エラーが原因でキューで保持されているメッセージについては、transmission_status 列でエラー メッセージを確認できます。

転送キュー内のすべてのメッセージがエラーによって発生しているとは限りません。

  • キュー内の一部のメッセージは、送信処理中である可能性があります。たとえば、切断された受信者が再接続するのを待機している場合や、ネットワーク送信の受信確認を待機している場合があります。

  • キューで RETENTION が ON に設定されている場合、正常に転送されたメッセージは、メッセージ交換が終了するまで転送キューで保持されます。

is_conversation_error 列は、メッセージによってエラーが発生したかどうかを示します。

sys.transmission_queue の詳細については、「sys.transmission_queue (Transact-SQL)」を参照してください。

Service Broker の SQL トレース イベント

Service Broker には、問題の診断に使用できる SQL トレース イベントがいくつか用意されています。SQL Server Profiler またはシステム ストアド プロシージャを使用すると、Service Broker のイベントとエラーが発生したときにそれらを監視する SQL トレースを構成できます。これにより、システムによって生成される Service Broker イベントや、そのイベントによってエラーが発生しているかどうかを確認できます。

SQL トレースの使用方法の詳細については、「イベントの監視」を参照してください。

Service Broker のトレース イベントの詳細については、「Broker イベント カテゴリ」を参照してください。

Service Broker のパフォーマンス オブジェクト

Service Broker には、システム モニタで Service Broker 操作のパフォーマンスの追跡に使用できるパフォーマンス オブジェクトがいくつか用意されています。

詳細については、「リソースの利用状況の監視 (システム モニタ)」を参照してください。

Service Broker のパフォーマンス オブジェクトの詳細については、次のトピックを参照してください。

Service Broker のエラー

Service Broker では、データベース エンジンと同じメカニズムを使用して、アプリケーションまたはツールにエラーを返します。詳細については、「データベース エンジン エラーについて」を参照してください。

Service Broker に固有のエラーの詳細については、「エラーとイベントのリファレンス (Service Broker)」を参照してください。

Transact-SQL ステートメントの実行時に生成される Service Broker のエラーは、呼び出し元のアプリケーションに返されます。たとえば、Management Studio の Transact-SQL クエリ エディタでスクリプトを実行している場合、Service Broker Transact-SQL ステートメントによるエラーはメッセージ ウィンドウに返されます。

多くの Service Broker 操作は非同期であり、アプリケーションがデータベース エンジンのインスタンスに接続されていない場合に発生します。通常、これらのエラーは、データベース エンジンのインスタンスに関連付けられているエラー ログと Windows アプリケーション ログに返されます。詳細については、「エラー ログの監視」を参照してください。

Service Broker のシステム ビュー

Service Broker には、既存の Service Broker の構成を分析したり、Service Broker のコンポーネントの状態を監視したりするためのシステム ビューがいくつか用意されています。

Service Broker のカタログ ビュー

Service Broker のカタログ ビューは、キューやコントラクトなど、Service Broker のカタログ オブジェクトの現在の構成データを返します。

Service Broker のカタログ ビューの一覧については、「Service Broker カタログ ビュー (Transact-SQL)」を参照してください。

Service Broker の動的管理ビュー

Service Broker の動的管理ビューは、アクティブ化タスクや Service Broker 接続など、Service Broker コンポーネントの現在の状態データを返します。

Service Broker の動的管理ビューの一覧については、「Service Broker 関連の動的管理ビュー (Transact-SQL)」を参照してください。