メッセージ交換の優先度の管理
Service Broker のメッセージ交換の優先度を使用すると、それほど重要ではない多数のメッセージによって重要なメッセージがブロックされないように、優先させるメッセージ交換を指定することができます。
メッセージ交換の優先度の有効化
メッセージ交換の優先度は、常に RECEIVE ステートメントに対してアクティブです。SEND ステートメントでメッセージ交換の優先度をアクティブにするには、HONOR_BROKER_PRIORITY データベース オプションをオンにする必要があります。既定では、このオプションはすべてのデータベースでオフに設定されています。
管理者は次のステートメントを使用することで、データベースで SEND ステートメントに対するメッセージ交換の優先度を有効にすることができます。
ALTER DATABASE MyDatabase SET HONOR_BROKER_PRIORITY ON;
SEND ステートメントに対するメッセージ交換の優先度をオフにするには、次のステートメントを使用します。
ALTER DATABASE MyDatabase SET HONOR_BROKER_PRIORITY OFF;
メッセージ交換の優先度の指定
メッセージ交換の優先度は、CREATE BROKER PRIORITY、ALTER BROKER PRIORITY、および DROP BROKER PRIORITY ステートメントを使用して指定します。詳細については、「メッセージ交換の優先度」を参照してください。
メッセージ交換の優先度の照会
メッセージ交換の優先度は、sys.conversation_priorities システム ビューに格納されます。次のステートメントは、現在のデータベースに設定されているすべてのメッセージ交換の優先度を一覧表示します。
SELECT scp.name AS priority_name,
ssc.name AS contract_name,
ssvc.name AS local_service_name,
scp.remote_service_name,
scp.priority AS priority_level
FROM sys.conversation_priorities AS scp
INNER JOIN sys.service_contracts AS ssc
ON scp.service_contract_id = ssc.service_contract_id
INNER JOIN sys.services AS ssvc
ON scp.local_service_id = ssvc.service_id
ORDER BY contract_name, local_service_name,
remote_service_name;