ALTER BROKER PRIORITY (Transact-SQL)

Ändert die Eigenschaften einer Service Broker-Konversationspriorität.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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 } ]
              )
}
[;]

Argumente

  • ConversationPriorityName
    Gibt den Namen der zu ändernden Konversationspriorität an. Der Name muss auf eine Konversationspriorität in der aktuellen Datenbank verweisen.

  • SET
    Gibt die Kriterien an, anhand derer bestimmt wird, ob die Konversationspriorität für eine Konversation übernommen wird. SET ist erforderlich und muss mindestens ein Kriterium enthalten: CONTRACT_NAME, LOCAL_SERVICE_NAME, REMOTE_SERVICE_NAME oder PRIORITY_LEVEL.

  • CONTRACT_NAME = {ContractName | ANY}
    Gibt den Namen eines Vertrags an, der als Kriterium verwendet wird, um zu bestimmen, ob die Konversationspriorität für eine Konversation übernommen wird. ContractName ist ein Bezeichner von Database Engine (Datenbankmodul), mit dem der Name eines Vertrags in der aktuellen Datenbank angegeben werden muss.

    • ContractName
      Gibt an, dass die Konversationspriorität nur für Konversationen übernommen werden kann, bei denen die BEGIN DIALOG-Anweisung, mit der die Konversation gestartet wurde, auf ON CONTRACT ContractName festgelegt ist.

    • ANY
      Gibt an, dass die Konversationspriorität für jede Konversation unabhängig vom verwendeten Vertrag übernommen werden kann.

    Wenn CONTRACT_NAME nicht angegeben ist, wird die Eigenschaft für den Vertrag der Konversationspriorität nicht geändert.

  • LOCAL_SERVICE_NAME = {LocalServiceName | ANY}
    Gibt den Namen eines Diensts an, der als Kriterium verwendet werden kann, um zu bestimmen, ob die Konversationspriorität für einen Konversationsendpunkt übernommen wird.

    LocalServiceName ist ein Database Engine (Datenbankmodul)-Bezeichner, der den Namen eines Diensts in der aktuellen Datenbank angeben muss.

    • LocalServiceName
      Gibt an, dass die Konversationspriorität für Folgendes übernommen werden kann:

      • Jeden Konversationsendpunkt für den Initiator, dessen Initiatordienstname LocalServiceName entspricht.

      • Jeden Konversationsendpunkt für das Ziel, dessen Zieldienstname LocalServiceName entspricht.

    • ANY

      • Gibt an, dass die Konversationspriorität unabhängig vom Namen des vom Endpunkt verwendeten lokalen Diensts für jeden Konversationsendpunkt übernommen werden kann.

    Wenn LOCAL_SERVICE_NAME nicht angegeben ist, wird die Eigenschaft für den lokalen Dienst der Konversationspriorität nicht geändert.

  • REMOTE_SERVICE_NAME = {'RemoteServiceName' | ANY}
    Gibt den Namen eines Diensts an, der als Kriterium verwendet werden kann, um zu bestimmen, ob die Konversationspriorität für einen Konversationsendpunkt übernommen wird.

    RemoteServiceName ist ein Literal vom Typ nvarchar(256). Service Broker verwendet einen Vergleich auf Byteebene, um eine Übereinstimmung für die Zeichenfolge RemoteServiceName festzustellen. Bei dem Vergleich wird die Groß-/Kleinschreibung beachtet, die aktuelle Sortierung hingegen wird nicht berücksichtigt. Der Zieldienst kann in der aktuellen Instanz von Database Engine (Datenbankmodul) oder in einer Remoteinstanz von Database Engine (Datenbankmodul) vorhanden sein.

    • 'RemoteServiceName'
      Gibt an, dass die Konversationspriorität Folgendem zugewiesen werden kann:

      • Jedem Konversationsendpunkt für den Initiator, dessen zugeordneter Zieldienstname RemoteServiceName entspricht.

      • Jedem Konversationsendpunkt für das Ziel, dessen zugeordneter Initiatordienstname RemoteServiceName entspricht.

    • ANY
      Gibt an, dass die Konversationspriorität unabhängig vom Namen des dem Endpunkt zugeordneten Remotediensts für jeden Konversationsendpunkt übernommen wird.

    Wenn REMOTE_SERVICE_NAME nicht angegeben ist, wird die Eigenschaft für den Remotedienst der Konversationspriorität nicht geändert.

  • PRIORITY_LEVEL = { PriorityValue | DEFAULT }
    Gibt die Prioritätsebene an, die jedem Konversationsendpunkt zugeordnet wird, der die Verträge und Dienste verwendet, die für die Konversationspriorität angegeben sind. PriorityValue muss ein Integer-Literalwert zwischen 1 (niedrigste Priorität) und 10 (höchste Priorität) sein.

    Wenn PRIORITY_LEVEL nicht angegeben ist, wird die Eigenschaft für die Prioritätsebene der Konversationspriorität nicht geändert.

Hinweise

Keine Eigenschaften, die von ALTER BROKER PRIORITY geändert werden, werden für vorhandene Konversationen übernommen. Die vorhandenen Konversationen werden mit der Priorität fortgesetzt, die beim Starten der Konversationen zugewiesen wurde.

Weitere Informationen finden Sie unter CREATE BROKER PRIORITY (Transact-SQL).

Berechtigungen

Die Berechtigung zum Erstellen einer Konversationspriorität erhalten standardmäßig die Mitglieder der festen Datenbankrolle db_ddladmin oder db_owner und die feste Serverrolle sysadmin. Erfordert die ALTER-Berechtigung für die Datenbank.

Beispiele

A. Ändern der Prioritätsstufe einer vorhandenen Konversationspriorität

Ändert die Prioritätsebene, nicht hingegen die Eigenschaften für den Vertrag, lokalen Dienst oder Remotedienst.

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

B. Ändern aller Prioritäten einer vorhandenen Konversationspriorität

Ändert die Eigenschaften für Prioritätsebene, Vertrag, lokalen Dienst und Remotedienst.

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