次の方法で共有


アクティブ化ストアド プロシージャのトラブルシューティング

アクティブ化ストアド プロシージャはバックグラウンド セッションで実行されます。したがって、アクティブ化ストアド プロシージャのトラブルシューティングのテクニックは、対話型セッションの一部であるストアド プロシージャのトラブルシューティングで使用されるテクニックとは多少異なります。

テクニック: アクティブ化ストアド プロシージャの出力を表示する

データベース エンジン は、アクティブ化ストアド プロシージャの出力を SQL Server のエラー ログに書き込みます。アクティブ化ストアド プロシージャで正しくない結果が生成される場合や、キューからの読み取りに失敗する場合は、SQL Server のエラー ログでプロシージャからの出力を確認します。たいていは、このストアド プロシージャの出力から、問題を特定するのに十分な情報が得られます。

テクニック: 対話型セッションからストアド プロシージャを実行する

アクティブ化ストアド プロシージャのトラブルシューティングで最も有効な方法の 1 つは、キューでアクティブ化をオフにして、SQL Server Management Studio (または sqlcmd ユーティリティ) からストアド プロシージャを実行する方法です。対話型セッションからストアド プロシージャを実行すると、ストアド プロシージャによって返されるエラーを確認できます。

ただし、ストアド プロシージャがデータベース エンジン によってアクティブ化されるときには、データベースの設定やセキュリティ コンテキストが異なる可能性があります。プロシージャを実行する前に EXECUTE AS を使用して、セッションのユーザーをアクティブ化のために指定されているユーザーに設定し、セッションのオプションをデータベースの既定値に設定します。

詳細については、「内部アクティブ化のコンテキスト」を参照してください。

現象: アクティブ化ストアド プロシージャが実行されない

この現象の一般的な原因はいくつかあります。

キューの設定が変更された可能性があります。カタログ ビュー sys.service_queues を使用して、キューの設定を確認してください。特に、アクティブ化が有効になっていること、正しいストアド プロシージャが指定されていること、および正しいセキュリティ プリンシパルが指定されていることを確認します。セキュリティ プリンシパルにストアド プロシージャの実行権限があることも確認します。

ストアド プロシージャが開始に失敗しているか、開始した直後に終了している可能性があります。この場合は、SQL Server のエラー ログで、ストアド プロシージャのエラーがないかどうかを確認します。SQL Server Management Studio からストアド プロシージャを実行して結果を確認することもできます。

現象: メッセージがキューに残っている

アクティブ化ストアド プロシージャが正常に開始されていることを確認します。

  • 動的管理ビュー sys.dm_broker_queue_monitors で、キュー モニタがキューに対してアクティブになっていることを確認します。アクティブになっていない場合、そのキューではアクティブ化がオンになっていません。ALTER QUEUE ステートメントを使用してアクティブ化をオンにします。
  • キューのキュー モニタの状態が RECEIVES_OCCURRING になっている必要があります。キュー モニタがこの状態になっていない場合は、動的管理ビュー sys.dm_broker_activated_tasks で、キューのアクティブなタスクが現在実行されていることを確認します。アクティブなタスクがない場合は、アクティブ化が失敗しています。このセクションの「現象: アクティブ化ストアド プロシージャが実行されない」を参照してください。

アクティブなタスクが実行されているのにメッセージがキューに残っている場合は、そのタスクが RECEIVE に失敗しているか、トランザクションのコミットに失敗しています。SQL Server のエラー ログで、そのストアド プロシージャからのエラーがないかどうかを確認してください。このほか、アクティブ化を停止してストアド プロシージャを手動で実行することも、この問題のトラブルシューティングに役立ちます。

参照

その他の技術情報

sys.service_queues (Transact-SQL)
sys.dm_broker_queue_monitors
sys.dm_broker_activated_tasks

ヘルプおよび情報

SQL Server 2005 の参考資料の入手