Udostępnij za pośrednictwem


CREATE BROKER PRIORITY (Transact-SQL)

Określa poziom priorytetu i określone kryteria określające, które Service Broker konwersacji, aby przypisać poziom priorytetu. Priorytet poziom jest przypisany do dowolnego punktu końcowego konwersacji, korzystającej z tej samej kombinacji zamówień i usług, które są określone w polu Priorytet konwersacji.Priorytety zakres wartości od 1 (niska) do 10 (wysoka).Wartość domyślna to 5.

Topic link iconKonwencje składni języka Transact-SQL

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

Argumenty

  • ConversationPriorityName
    Określa nazwę dla tego priorytetu konwersacji.The name must be unique in the current database, and must conform to the rules for Database Engineidentifiers.

  • ZESTAW
    Określa kryteria sprawdzania, czy priorytet konwersacji odnosi się do konwersacji.Jeśli określono, zestaw musi zawierać co najmniej jedno kryterium: CONTRACT_NAME, LOCAL_SERVICE_NAME, REMOTE_SERVICE_NAME lub PRIORITY_LEVEL. Jeśli nie określono parametr zestaw, wartości domyślne są ustawiane dla wszystkich trzech kryteriów.

  • CONTRACT_NAME = {ContractName | WSZYSTKIE}
    Specifies the name of a contract to be used as a criterion for determining if the conversation priority applies to a conversation.ContractName is a Database Engine identifier, and must specify the name of a contract in the current database.

    • ContractName
      Określa, że priorytet konwersacji może być stosowana tylko do konwersacji, gdy instrukcja BEGIN DIALOG rozpoczęcia konwersacji określony ON kontrakt ContractName.

    • WSZYSTKIE
      Określa, że priorytet konwersacji mogą być stosowane do wszystkich konwersacji niezależnie od której kontrakt go używa.

    Wartość domyślna to ANY.

  • LOCAL_SERVICE_NAME = {LocalServiceName | WSZYSTKIE}
    Określa nazwę usługa ma być używana jako kryterium, aby określić, jeśli priorytet konwersacji stosuje się z punkt końcowy konwersacji.

    LocalServiceName jest Database Engine identyfikator. Podaj nazwę usługa w bieżącej bazie danych.

    • LocalServiceName
      Określa, że priorytet konwersacji można stosować do następującego:

      • Wszelkie punkt końcowy konwersacji inicjatora, którego nazwa usługa inicjatora odpowiada LocalServiceName.

      • Każdy punkt końcowy konwersacji miejsce docelowe odpowiada której miejsce docelowe nazwa usługa LocalServiceName.

    • WSZYSTKIE

      • Określa, że priorytet konwersacji może być stosowana do dowolnego punkt końcowy konwersacji, niezależnie od nazwy lokalnej usługa używane przez punkt końcowy.

    Wartość domyślna to ANY.

  • REMOTE_SERVICE_NAME = {"RemoteServiceName' | WSZYSTKIE}
    Określa nazwę usługa ma być używana jako kryterium, aby określić, jeśli priorytet konwersacji stosuje się z punkt końcowy konwersacji.

    RemoteServiceName is a literal of type nvarchar(256).Service Broker uses a byte-by-byte comparison to match the RemoteServiceName string.Wynikiem porównania jest przypadek - poufne i nie bierze pod uwagę bieżący sortowanie.Usługa miejsce docelowe może być w bieżącym wystąpieniu programu Database Engine, lub zdalnego wystąpienie Database Engine.

    • 'RemoteServiceName'
      Określa, że priorytet konwersacji można stosować do następującego:

      • Każdy punkt końcowy konwersacji inicjatora, których nazwa usługa miejsce docelowe skojarzonych z parametrem RemoteServiceName.

      • Każdy punkt końcowy konwersacji miejsce docelowe, których nazwa usługa inicjatora skojarzonych z parametrem RemoteServiceName.

    • WSZYSTKIE
      Określa, że priorytet konwersacji może być stosowana do dowolnego punkt końcowy konwersacji, niezależnie od nazwy zdalnej usługa skojarzonej z punktem końcowym.

    Wartość domyślna to ANY.

  • PRIORITY_LEVEL = {PriorityValue | WARTOŚĆ DOMYŚLNA }
    Specifies the priority to assign any conversation endpoint that use the contracts and services specified in the conversation priority.PriorityValue must be an integer literal from 1 (lowest priority) to 10 (highest priority).Wartość domyślna to 5.

Remarks

Service Broker przypisuje poziomy priorytetu do punktów końcowych konwersacji.Poziomy priorytetu kontrolować priorytet operacji skojarzonej z punktem końcowym.Każdej konwersacji ma dwa punkty końcowe konwersacji:

  • Punkt końcowy konwersacji inicjatora kojarzy po jednej stronie konwersacji z usługa inicjatora i kolejka inicjatora.Punkt końcowy konwersacji inicjatora jest tworzony podczas uruchamiania jest instrukcja BEGIN DIALOG.Operacje związane z danym punkt końcowy konwersacji inicjatora należą:

    • Wysyła z usługa inicjatora.

    • Odbiera z kolejki inicjatora.

    • Pobieranie następnej grupa konwersacji z kolejki inicjatora.

  • miejsce docelowe punkt końcowy konwersacji kojarzy drugiej stronie komunikacji z usługa docelowego i kolejki.Punkt końcowy konwersacji miejsce docelowe jest tworzony podczas konwersacji jest używany do wysyłania wiadomości do kolejki miejsce docelowe.Operacji skojarzonej z punkt końcowy konwersacji miejsce docelowe należą:

    • Odbiera od kolejka docelowa.

    • Wysyła z miejsce docelowe usługa.

    • Uzyskiwanie następnej grupa konwersacji z kolejka docelowa.

Service Broker przypisuje konwersacji poziomy priorytetu, tworząc punkty końcowe konwersacji.Punkt końcowy konwersacji zachowuje poziom priorytetu do czasu zakończenia rozmowy.Nowe priorytety i zmiany priorytetów istniejących nie są stosowane do istniejącej konwersacji.

Service Broker przypisuje poziom priorytetu punkt końcowy konwersacji z priorytetem konwersacji, w której kryteria kontrakt i usług najlepszego dopasowania właściwości punktu końcowego.W poniższej tabela przedstawiono pierwszeństwo dopasowania:

Operacja kontrakt

Operacja usługa lokalnej

Usługa zdalnego operacji

ContractName

LocalServiceName

RemoteServiceName

ContractName

LocalServiceName

WSZYSTKIE

ContractName

WSZYSTKIE

RemoteServiceName

ContractName

WSZYSTKIE

WSZYSTKIE

WSZYSTKIE

LocalServiceName

RemoteServiceName

WSZYSTKIE

LocalServiceName

WSZYSTKIE

WSZYSTKIE

WSZYSTKIE

RemoteServiceName

WSZYSTKIE

WSZYSTKIE

WSZYSTKIE

Service Broker w pierwszej kolejności wyszukuje priorytetem, których określonej kontrakt, Usługa lokalna i zdalna usługa pasuje do tych, które korzysta z tej operacji.Jeśli zostanie ono znalezione, Service Broker szuka priorytet z kontrakt i lokalnej usługi korzystającej z operacji i gdy usługa zdalnego został określony jako ANY zgodny. Ten proces jest kontynuowany dla wszystkich zmian wymienionych w tabela priorytet.Jeśli nie zostanie znaleziony, operacja jest przypisany domyślny priorytet 5.

Service Broker niezależnie od siebie poziom priorytetu są przypisywane do każdego punkt końcowy konwersacji.Aby program Service Broker przypisywanie poziomów priorytetu zarówno inicjatora i punkty końcowe konwersacji miejsce docelowe, należy upewnić się że oba punkty końcowe są objęte priorytetów konwersacji. W przypadku inicjatora i miejsce docelowe punktach końcowych konwersacji w odrębnych bazach danych, należy utworzyć priorytetów konwersacji w każdej bazy danych.Oba punkty końcowe konwersacji dla konwersacji zazwyczaj określono ten sam priorytet, ale można określić różnych poziomów priorytetu.

Poziomy priorytetu są zawsze stosowane do operacji, które odbierają wiadomości i identyfikatory grupa konwersacji z kolejki.Poziomy priorytetu są również stosowane przy przekazywaniu wiadomości z jednego wystąpienie Database Engine do innego.

Poziomy priorytetu nie są używane przy przesyłaniu wiadomości:

  • Z bazy danych, w którym HONOR_BROKER_PRIORITY bazy danych opcja jest ustawiona na wyłączona.Aby uzyskać więcej informacji zobaczALTER DATABASE SET Options (Transact-SQL).

  • Między usługi z tego samego wystąpienie aparat bazy danych.

  • Wszystkie Service Broker operacje w bazie danych są przypisywane domyślne priorytety 5, jeśli priorytetów konwersacji nie zostały utworzone w bazie danych.

Uprawnienia

Uprawnienie do tworzenia wartości domyślnych członków db_ddladmin lub db_owner stałe role bazy danych i do roli sysadmin stałych serwera priorytet konwersacji.Wymaga ALTER uprawnień w bazie danych.

Przykłady

A.Przypisanie poziom priorytetu dwukierunkowej komunikacji.

Priorytety te dwa konwersacji upewnić się, że wszystkie operacje, które korzystają z SimpleContract między TargetService oraz InitiatorAService jest przypisywany poziom priorytetu 3.

CREATE BROKER PRIORITY InitiatorAToTargetPriority
    FOR CONVERSATION
    SET (CONTRACT_NAME = SimpleContract,
         LOCAL_SERVICE_NAME = InitiatorServiceA,
         REMOTE_SERVICE_NAME = N'TargetService',
         PRIORITY_LEVEL = 3);
CREATE BROKER PRIORITY TargetToInitiatorAPriority
    FOR CONVERSATION
    SET (CONTRACT_NAME = SimpleContract,
         LOCAL_SERVICE_NAME = TargetService,
         REMOTE_SERVICE_NAME = N'InitiatorServiceA',
         PRIORITY_LEVEL = 3);

B.Ustawianie poziom priorytetu dla wszystkich konwersacji, korzystające z kontrakt

Przypisuje poziom priorytetu 7 celu wszystkie operacje, które korzystają z kontrakt, o nazwie SimpleContract. Ta zakłada, że są nie priorytetów określić zarówno SimpleContract a lokalnym lub zdalnym usługa.

CREATE BROKER PRIORITY SimpleContractDefaultPriority
    FOR CONVERSATION
    SET (CONTRACT_NAME = SimpleContract,
         LOCAL_SERVICE_NAME = ANY,
         REMOTE_SERVICE_NAME = ANY,
         PRIORITY_LEVEL = 7);

C.Ustawianie poziom priorytetu podstawowego dla bazy danych.

Określa priorytety konwersacji dla dwóch określonych usług, a następnie określa priorytet konwersacji będzie pasował do wszystkich innych punktów końcowych konwersacji.To nie zastępuje domyślny priorytet, który jest zawsze 5, ale Ogranicz liczbę elementów, które są przypisane domyślnie.

CREATE BROKER PRIORITY [//Adventure-Works.com/Expenses/ClaimPriority]
    FOR CONVERSATION
    SET (CONTRACT_NAME = ANY,
         LOCAL_SERVICE_NAME = //Adventure-Works.com/Expenses/ClaimService,
         REMOTE_SERVICE_NAME = ANY,
         PRIORITY_LEVEL = 9);
CREATE BROKER PRIORITY [//Adventure-Works.com/Expenses/ApprovalPriority]
    FOR CONVERSATION
    SET (CONTRACT_NAME = ANY,
         LOCAL_SERVICE_NAME = //Adventure-Works.com/Expenses/ClaimService,
         REMOTE_SERVICE_NAME = ANY,
         PRIORITY_LEVEL = 6);
CREATE BROKER PRIORITY [//Adventure-Works.com/Expenses/BasePriority]
    FOR CONVERSATION
    SET (CONTRACT_NAME = ANY,
         LOCAL_SERVICE_NAME = ANY,
         REMOTE_SERVICE_NAME = ANY,
         PRIORITY_LEVEL = 3);

D.Tworzenie trzy poziomy priorytetu usługa miejsce docelowe przy użyciu usługa

Obsługuje system, który zawiera trzy poziomy wydajności: Złota (wysoka), srebrny (średnia), a brązowy (niska). Istnieje jedna kontrakt, ale każdy poziom ma usługa oddzielnego inicjatora.Wszystkie usługa inicjatora powiadomić usługa miejsce docelowe centralnego.

CREATE BROKER PRIORITY GoldInitToTargetPriority
    FOR CONVERSATION
    SET (CONTRACT_NAME = SimpleContract,
         LOCAL_SERVICE_NAME = GoldInitiatorService,
         REMOTE_SERVICE_NAME = N'TargetService',
         PRIORITY_LEVEL = 6);
CREATE BROKER PRIORITY GoldTargetToInitPriority
    FOR CONVERSATION
    SET (CONTRACT_NAME = SimpleContract,
         LOCAL_SERVICE_NAME = TargetService,
         REMOTE_SERVICE_NAME = N'GoldInitiatorService',
         PRIORITY_LEVEL = 6);
CREATE BROKER PRIORITY SilverInitToTargetPriority
    FOR CONVERSATION
    SET (CONTRACT_NAME = SimpleContract,
         LOCAL_SERVICE_NAME = SilverInitiatorService,
         REMOTE_SERVICE_NAME = N'TargetService',
         PRIORITY_LEVEL = 4);
CREATE BROKER PRIORITY SilverTargetToInitPriority
    FOR CONVERSATION
    SET (CONTRACT_NAME = SimpleContract,
         LOCAL_SERVICE_NAME = TargetService,
         REMOTE_SERVICE_NAME = N'SilverInitiatorService',
         PRIORITY_LEVEL = 4);
CREATE BROKER PRIORITY BronzeInitToTargetPriority
    FOR CONVERSATION
    SET (CONTRACT_NAME = SimpleContract,
         LOCAL_SERVICE_NAME = BronzeInitiatorService,
         REMOTE_SERVICE_NAME = N'TargetService',
         PRIORITY_LEVEL = 2);
CREATE BROKER PRIORITY BronzeTargetToInitPriority
    FOR CONVERSATION
    SET (CONTRACT_NAME = SimpleContract,
         LOCAL_SERVICE_NAME = TargetService,
         REMOTE_SERVICE_NAME = N'BronzeInitiatorService',
         PRIORITY_LEVEL = 2);

E.Tworzenie trzy poziomy priorytetu dla wielu usług przy użyciu kontraktów

Obsługuje system, który zawiera trzy poziomy wydajności: Złota (wysoka), srebrny (średnia), a brązowy (niska). Każdy poziom zawiera oddzielne kontrakt.Priorytety te dotyczą wszystkie usługi, do których odwołuje się konwersacji, korzystające z umowami.

CREATE BROKER PRIORITY GoldPriority
    FOR CONVERSATION
    SET (CONTRACT_NAME = GoldContract,
         LOCAL_SERVICE_NAME = ANY,
         REMOTE_SERVICE_NAME = ANY,
         PRIORITY_LEVEL = 6);
CREATE BROKER PRIORITY SilverPriority
    FOR CONVERSATION
    SET (CONTRACT_NAME = SilverContract,
         LOCAL_SERVICE_NAME = ANY,
         REMOTE_SERVICE_NAME = ANY,
         PRIORITY_LEVEL = 4);
CREATE BROKER PRIORITY BronzePriority
    FOR CONVERSATION
    SET (CONTRACT_NAME = BronzeContract,
         LOCAL_SERVICE_NAME = ANY,
         REMOTE_SERVICE_NAME = ANY,
         PRIORITY_LEVEL = 2);