適用対象:SQL Server
Azure SQL Managed Instance
キューを開始および停止するには、 ALTER QUEUE ステートメントを使用します。 キューを開始すると、キューがメッセージを送信および受信できるようになります。 キューが停止すると、Service Broker はキューに新しいメッセージを配信せず、アプリケーションがキューからメッセージを受信することを許可しません。
多くの場合、管理者は、利用できない状態のキューを作成します。 この状態により、サービスのすべてのオブジェクトが作成されるまで、Service Broker はメッセージをキューに配置できなくなります。 サービスがメッセージを受信する準備が完了すると、管理者は次のステートメントを使用してキューを利用できる状態にします。
ALTER QUEUE dbo.ExpenseQueue
WITH STATUS = ON;
次のステートメントを使用すると、キューがメッセージを受信できなくなります。
ALTER QUEUE dbo.ExpenseQueue
WITH STATUS = OFF;
キューが受信できない場合、アプリケーションはキュー内のメッセージを処理できません。 Service Broker では、メッセージが受信操作の一部としてキューから離れるだけであることを保証するため、停止したキューからメッセージを削除する方法はありません。 Service Broker は、キューがメッセージを受信し続ける間もメンテナンスを許可するように設計されているため、キューが使用可能になった後にキューを停止する必要はほとんどありません。 ほとんどのアクティブ化ストアド プロシージャは、 RECEIVE 操作が失敗したとき、またはそれ以上メッセージが使用できない場合に終了するため、キューを停止する理由の 1 つは、メッセージを絶えず受信するサービスのアクティブ化ストアド プロシージャを置き換えるためです。
使用できないキューにメッセージが到着すると、Service Broker はこのメッセージをキューに配信するのではなく、データベースの転送キューに保持します。