ALTER BROKER PRIORITY (Transact-SQL)

Service Broker メッセージ交換の優先度のプロパティを変更します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

ALTER BROKER PRIORITY ConversationPriorityName
FOR CONVERSATION
{ SET ( [ CONTRACT_NAME = {ContractName | ANY } ]
        [ [ , ] LOCAL_SERVICE_NAME = {LocalServiceName | ANY } ]
        [ [ , ] REMOTE_SERVICE_NAME = {'RemoteServiceName' | ANY } ]
        [ [ , ] PRIORITY_LEVEL = { PriorityValue | DEFAULT } ]
              )
}
[;]

引数

  • ConversationPriorityName
    変更するメッセージ交換の優先度の名前を指定します。名前は、現在のデータベース内のメッセージ交換の優先度を参照する必要があります。

  • SET
    指定したメッセージ交換の優先度をメッセージ交換に適用するかどうかを決定するための条件を指定します。SET は必須で、CONTRACT_NAME、LOCAL_SERVICE_NAME、REMOTE_SERVICE_NAME、または PRIORITY_LEVEL の各条件のうち、少なくとも 1 つを指定する必要があります。

  • CONTRACT_NAME = {ContractName | ANY}
    メッセージ交換の優先度をメッセージ交換に適用するかどうかを決定するための条件として使用するコントラクトの名前を指定します。ContractName はデータベース エンジン識別子で、現在のデータベース内のコントラクトの名前を指定する必要があります。

    • ContractName
      メッセージ交換の優先度を適用できるのは、メッセージ交換を開始した BEGIN DIALOG ステートメントで ON CONTRACT ContractName が指定されたメッセージ交換だけであることを指定します。

    • ANY
      使用するコントラクトに関係なく、メッセージ交換の優先度をどのメッセージ交換にも適用できることを指定します。

    CONTRACT_NAME を指定しない場合、メッセージ交換の優先度のコントラクト プロパティは変更されません。

  • LOCAL_SERVICE_NAME = {LocalServiceName | ANY}
    メッセージ交換の優先度をメッセージ交換のエンドポイントに適用するかどうかを決定するための条件として使用するサービスの名前を指定します。

    LocalServiceName はデータベース エンジン識別子で、現在のデータベース内のサービスの名前を指定する必要があります。

    • LocalServiceName
      メッセージ交換の優先度を次のメッセージ交換のエンドポイントに適用できることを指定します。

      • 発信側サービス名が LocalServiceName に一致する任意の発信側メッセージ交換のエンドポイント

      • 発信先サービス名が LocalServiceName に一致する任意の発信先メッセージ交換のエンドポイント

    • ANY

      • エンドポイントで使用されるローカル サービスの名前に関係なく、メッセージ交換の優先度をどのメッセージ交換のエンドポイントにも適用できることを指定します。

    LOCAL_SERVICE_NAME を指定しない場合、メッセージ交換の優先度のローカル サービス プロパティは変更されません。

  • REMOTE_SERVICE_NAME = {'RemoteServiceName' | ANY}
    メッセージ交換の優先度をメッセージ交換のエンドポイントに適用するかどうかを決定するための条件として使用するサービスの名前を指定します。

    RemoteServiceName は nvarchar(256) 型のリテラルです。Service Broker では、RemoteServiceName 文字列がバイト単位で照合されます。この比較では、大文字と小文字が区別され、現在の照合順序は考慮されません。発信先サービスは、データベース エンジンの現在のインスタンス内にあっても、データベース エンジンのリモート インスタンス内にあってもかまいません。

    • 'RemoteServiceName'
      メッセージ交換の優先度を次のメッセージ交換のエンドポイントに割り当てることを指定します。

      • 関連付けられている発信先サービス名が RemoteServiceName に一致する任意の発信側メッセージ交換のエンドポイント

      • 関連付けられている発信側サービス名が RemoteServiceName に一致する任意の発信先メッセージ交換のエンドポイント

    • ANY
      エンドポイントに関連付けられているリモート サービスの名前に関係なく、メッセージ交換の優先度をどのメッセージ交換のエンドポイントにも適用することを指定します。

    REMOTE_SERVICE_NAME を指定しない場合、メッセージ交換の優先度のリモート サービス プロパティは変更されません。

  • PRIORITY_LEVEL = { PriorityValue | DEFAULT }
    メッセージ交換の優先度で指定されているコントラクトおよびサービスを使用するすべてのメッセージ交換のエンドポイントに割り当てる優先度レベルを指定します。PriorityValue には、1 (最も低い優先度) ~ 10 (最も高い優先度) の整数リテラルを指定する必要があります。

    PRIORITY_LEVEL を指定しない場合、メッセージ交換の優先度の優先度レベル プロパティは変更されません。

説明

ALTER BROKER PRIORITY で変更されるプロパティは、既存のメッセージ交換には適用されません。既存のメッセージ交換は、開始されたときに割り当てられた優先度のままです。

詳細については、「CREATE BROKER PRIORITY (Transact-SQL)」を参照してください。

権限

メッセージ交換の優先度を作成する権限は、既定では db_ddladmin 固定データベース ロールまたは db_owner 固定データベース ロールのメンバ、および sysadmin 固定サーバー ロールのメンバに与えられています。データベースに対する ALTER 権限が必要です。

A. 既存のメッセージ交換の優先度レベルのみ変更する

優先度レベルを変更しますが、コントラクト、ローカル サービス、またはリモート サービスの各プロパティは変更しません。

ALTER BROKER PRIORITY SimpleContractDefaultPriority
    FOR CONVERSATION
    SET (PRIORITY_LEVEL = 3);

B. 既存のメッセージ交換の優先度のプロパティをすべて変更する

優先度レベル、コントラクト、ローカル サービス、およびリモート サービスの各プロパティを変更します。

ALTER BROKER PRIORITY SimpleContractPriority
    FOR CONVERSATION
    SET (CONTRACT_NAME = SimpleContractB,
         LOCAL_SERVICE_NAME = TargetServiceB,
         REMOTE_SERVICE_NAME = N'InitiatorServiceB',
         PRIORITY_LEVEL = 8);