メッセージ交換の優先度の管理

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;