Tworzenie BROKER PRIORYTETU (Transact-SQL)

Określa priorytet poziom i zestaw kryteria dotyczące ustalania, które Service Broker konwersacji, aby przypisać poziompriorytetu.poziom priorytetu jest przypisany do dowolnego punkt końcowy konwersacji używa tej samej kombinacji umów 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.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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ę tego priorytetu konwersacji.Nazwa musi być unikatowa w bieżącej bazie danych i muszą być zgodne z zasadami Aparat baz danych identyfikatorów.

  • ZESTAW
    Określa kryteria przy ustalaniu, czy priorytet konwersacji stosuje się do konwersacji.Jeśli określony, zestaw musi zawierać co najmniej jedno kryterium: CONTRACT_NAME, LOCAL_SERVICE_NAME, REMOTE_SERVICE_NAME lub PRIORITY_LEVEL.Jeśli zestaw nie jest określony, ustawienia domyślne są zestaw dla wszystkich trzech kryteriów.

  • CONTRACT_NAME = {ContractName | ANY}
    Określa nazwę kontrakt do użytku jako kryterium przy ustalaniu, czy priorytet konwersacji stosuje się do konwersacji.ContractNamejest Aparat baz danych identyfikator i należy określić nazwę kontrakt w bieżącej bazie danych.

    • ContractName
      Określa, że priorytet konwersacji można zastosować tylko do konwersacji, gdzie rozpoczyna się okno DIALOGOWE instrukcja rozpoczęcia konwersacji określonej umowy na ContractName.

    • WSZELKIE
      Określa zastosowana priorytet konwersacji do rozmowy, niezależnie od której kontrakt używa.

    Jest to wartość domyślna.

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

    LocalServiceNamejest identyfikatoraAparat baz danych . Podaj nazwę usługa w bieżącej bazie danych.

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

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

      • Wszelkie miejsce docelowepunkt końcowy konwersacji którego nazwausługa miejsce doceloweodpowiada LocalServiceName.

    • WSZELKIE

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

    Jest to wartość domyślna.

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

    RemoteServiceNameliterał typu jest nvarchar(256).Service BrokerPorównanie bajt po bajcie używa w celu dopasowania RemoteServiceName ciąg.przypadek-poufne i nie uzna bieżące sortowanie.miejsce doceloweusługa może być w bieżącej wystąpienie Aparat baz danych, lub zdalnego wystąpienie Aparat baz danych.

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

      • Wszelkie inicjatora punkt końcowy konwersacji którego nazwausługa skojarzonej miejsce doceloweodpowiada RemoteServiceName.

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

    • WSZELKIE
      Określa, że priorytet konwersacji mogą być stosowane do dowolnego punkt końcowy konwersacji, niezależnie od nazwy zdalnego usługa skojarzone z punktem końcowym.

    Jest to wartość domyślna.

  • PRIORITY_LEVEL = { PriorityValue | DEFAULT }
    Określa priorytet przypisać dowolny punkt końcowy konwersacji umów i usługi określone w polu Priorytet konwersacji.PriorityValuemusi być liczbą całkowitą literału od 1 (najniższy priorytet) do 10 (najwyższy priorytet).Wartość domyślna to 5.

Uwagi

Service Brokerprzypisuje poziomy priorytetu do punktów końcowych konwersacji.Poziomy priorytetu kontroli priorytet operacji skojarzonych z punktem końcowym.Każda z nich ma dwa punkty końcowe konwersacji:

  • Inicjator punkt końcowy konwersacji kojarzy po jednej stronie konwersacji z usługa inicjatora i kolejka inicjatora.Inicjator punkt końcowy konwersacji jest tworzony podczas Uruchom okno DIALOGOWE rozpocząć instrukcja .Operacje związane z inicjatora punkt końcowy konwersacji obejmują:

    • Wysyła z usługainicjatora.

    • Odbiera z kolejki inicjatora.

    • Pobieranie następnej grupa konwersacji z kolejki inicjatora.

  • miejsce docelowepunkt końcowy konwersacji kojarzy drugiej stronie konwersację z miejsce doceloweusługa i kolejki. miejsce docelowepunkt końcowy konwersacji jest tworzony podczas konwersacji jest używany do wysyłania wiadomości do kolejki miejsce docelowe . Operacje związane z miejsce docelowe punkt końcowy konwersacji obejmują:

    • Odbiera z kolejki miejsce docelowe .

    • Wysyła z miejsce docelowe usługa.

    • Pobieranie następnej grupa konwersacji z kolejki miejsce docelowe .

Service Brokerprzypisuje konwersacji poziomy priorytetu, gdy tworzone są punkty końcowe konwersacji.punkt końcowy konwersacji zachowuje poziom priorytetu, do czasu zakończenia rozmowy.Nowe priorytety lub zmian do istniejących priorytetów nie są stosowane do istniejącej konwersacji.

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

Operacja kontrakt

Operacja lokalnej usługa

Operacja zdalnego usługa

ContractName

LocalServiceName

RemoteServiceName

ContractName

LocalServiceName

WSZELKIE

ContractName

WSZELKIE

RemoteServiceName

ContractName

WSZELKIE

WSZELKIE

WSZELKIE

LocalServiceName

RemoteServiceName

WSZELKIE

LocalServiceName

WSZELKIE

WSZELKIE

WSZELKIE

RemoteServiceName

WSZELKIE

WSZELKIE

WSZELKIE

Service Brokerw pierwszej kolejności wyszukuje priorytetem, których określonej kontrakt, lokalna usługai tych, które używa operacji pasuje do zdalnego usługa .Jeśli nie zostanie ono znalezione, Service Broker szuka priorytet z kontrakt i lokalnej usługa korzystającej z operacji, i których usługa zdalnego określono jako, które odpowiadająANY.Ten proces jest kontynuowany dla wszystkich odmian wymienionych w tabelapriorytet.Jeśli nie zostanie znaleziony, operacja jest przypisany domyślny priorytet 5.

Service Brokerniezależnie przypisuje priorytetu poziom do każdego punkt końcowy konwersacji.Aby Service Broker przypisać poziomy priorytetu zarówno inicjatora i punkty końcowe konwersacji miejsce docelowe , muszą zapewnić, że oba punkty końcowe są objęte konwersacji priorytetów.Jeśli punkty końcowe inicjatora i miejsce docelowe konwersacji w odrębnych bazach danych, należy utworzyć priorytetów konwersacji w każdej bazie danych.Ten sam priorytet poziom zwykle jest określona dla obu punktów końcowych konwersacji konwersacji, ale można określić różnych poziomów priorytetu.

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

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

  • Z bazy danych, gdzie jest HONOR_BROKER_PRIORITY opcji bazy danych jest zestaw na wyłączone.Aby uzyskać więcej informacji, zobacz ZMIENIA opcje zestawu bazy danych (Transact-SQL).

  • Między służbami w tym samym wystąpienie aparatu bazy danych.

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

Uprawnienia

Uprawnienie do tworzenia wartości domyślnych dla członków priorytet konwersacji db_ddladmin lub db_owner ról stałej bazy danych i sysadmin stała rola serwera.Wymaga zmiany uprawnień w bazie danych.

Przykłady

A.Przypisywanie priorytetu poziom w obu kierunkach konwersacji.

Priorytety te dwa konwersacji zagwarantować, że wszystkie operacje, używać SimpleContract między TargetService i InitiatorAService są przypisywane priorytet poziom 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 wszystkie konwersacje, które korzystają z kontrakt

Przypisuje poziom priorytetu z 7 do wszystkich operacji, które korzystają z kontrakt o nazwie SimpleContract.Założono, że nie istnieją żadne priorytety, których określić zarówno SimpleContract i lokalnego lub zdalnego 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 priorytetu podstawowego poziom dla bazy danych.

Określa priorytety konwersacji dla dwóch określonych usług oraz określa priorytet konwersacji, spełniających wszystkie pozostałe punkty końcowe konwersacji.Zastępuje domyślny priorytet, który jest zawsze 5, ale zminimalizować 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 dla miejsce docelowe usługa przy użyciu usługi

Obsługuje system, który zawiera trzy poziomy wydajności: Złota (wysoka), srebra (średnia) i Bronze (niska).Nie ma jednego kontrakt, ale każdy poziom ma oddzielne inicjatora usługa.Wszystkie usługi inicjatora przekazują centralnej miejsce docelowe usługa.

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 za pomocą umów

Obsługuje system, który zawiera trzy poziomy wydajności: Złota (wysoka), srebra (średnia) i Bronze (niska).Każdy poziom ma oddzielne kontrakt.Priorytety te dotyczą wszystkie usługi, które odwołują się konwersacji, które korzystają z umów.

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);