Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Managed Instance
Meghatározza a prioritási szintet és a kritériumok rendszerét, amelyek meghatározzák, hogy mely szolgáltatási bróker beszélgetésekhez kell kijelölni az elsőbbségi szintet. A prioritási szintet bármely olyan beszélgetés végponthoz rendelik, amely ugyanazt a szerződés- és szolgáltatáskombinációt használja, mint a beszélgetés prioritása. A prioritások értéke 1 (alacsony) és 10 (magas) között változik. Az alapértelmezett érték 5.
Transact-SQL szintaxis konvenciók
Syntax
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 } ]
)
]
[;]
Arguments
ConversationPriorityNév
Megadja ennek a beszélgetésprioritásnak a nevét. A névnek egyedinek kell lennie a jelenlegi adatbázisban, és meg kell felelnie a Database Engine azonosítók szabályainak.
SET
Meghatározza azokat a kritériumokat, amelyek alapján a beszélgetés prioritása vonatkozik-e egy beszélgetésre. Ha meg van határozva, SET legalább egy kritériumot kell tartalmaznia: CONTRACT_NAME, LOCAL_SERVICE_NAME, REMOTE_SERVICE_NAME vagy PRIORITY_LEVEL. Ha SET nincs megadva, az alapértelmezett beállítások mind a három kritériumra vannak beállítva.
CONTRACT_NAME = {ContractName | ANY}
Megadja a szerződés nevét, amelyet kriteriumként kell használni annak meghatározásában, hogy a beszélgetés prioritása alkalmazható-e egy beszélgetésre.
A ContractName egy Database Engine azonosítója, és meg kell határoznia egy szerződés nevét a jelenlegi adatbázisban.
Szerződésnév
Megadja, hogy a beszélgetés prioritása csak azokra a beszélgetésekre alkalmazható, ahol a beszélgetést indító BEGIN DIALOG utasítás CONTRACT ContractName címet.
BÁRMELY
Megadja, hogy a beszélgetés prioritása bármely beszélgetésre alkalmazható, függetlenül attól, hogy melyik szerződést használja.
Az alapértelmezett ANY.
LOCAL_SERVICE_NAME = {LocalServiceName | ANY}
Megadja egy szolgáltatás nevét, amelyet kritériumként kell használni annak meghatározására, hogy a beszélgetés prioritása alkalmazható-e egy beszélgetés végpontjára.
A LocalServiceName egy Database Engine azonosítója. Meg kell határoznia egy szolgáltatás nevét a jelenlegi adatbázisban.
LocalServiceName
Megadja, hogy a beszélgetés prioritása alkalmazható az alábbiakra:
Bármely indító beszélgetés végpont, amelynek indító szolgáltatás neve megegyezik a LocalServiceName névvel.
Bármely cél beszélgetési végpont, amelynek célszolgáltatási neve megegyezik a LocalServiceName-vel.
BÁRMELY
- Megadja, hogy a beszélgetés prioritása bármely beszélgetési végpontra alkalmazható, függetlenül a végpont által használt helyi szolgáltatás nevetől.
Az alapértelmezett ANY.
REMOTE_SERVICE_NAME = {'RemoteServiceName' | ANY}
Megadja egy szolgáltatás nevét, amelyet kritériumként kell használni annak meghatározására, hogy a beszélgetés prioritása alkalmazható-e egy beszélgetés végpontjára.
A RemoteServiceName egy szó szerinti nvarchar(256) típus. A Service Broker bájtról bájtra összehasonlítást használ, hogy egyeztesse a RemoteServiceName sort. Az összehasonlítás kis- és kisméret-érzékeny, és nem veszi figyelembe a jelenlegi összeállítást. A célszolgáltatás lehet a Database Engine aktuális példányában, vagy a Database Engine távoli példányában.
'Távoli SzolgáltatásNév'
Megadja, hogy a beszélgetés prioritása alkalmazható az alábbiakra:
Bármely indító beszélgetés végpont, amelynek hozzárendelt célszolgáltatás neve egyezik a RemoteServiceName címmel.
Bármely cél beszélgetési végpont, amelynek hozzárendelt indító szolgáltatás neve megegyezik a RemoteServiceName-vel.
BÁRMELY
Meghatározza, hogy a beszélgetés prioritása bármely beszélgetési végpontra alkalmazható, függetlenül a végponthoz tartozó távoli szolgáltatás nevetől.
Az alapértelmezett ANY.
PRIORITY_LEVEL = { PriorityValue | DEFAULT }
Megadja a prioritást bármely beszélgetési végpont hozzárendeléséhez, amely a beszélgetés prioritásában megadott szerződéseket és szolgáltatásokat használja.
A PriorityValue egy egész szám literálisnak kell lennie 1-től (legalacsonyabb prioritás) 10-ig (legmagasabb prioritás). Az alapértelmezett érték 5.
Remarks
A Service Broker prioritási szinteket rendel a beszélgetés végpontjainak. A prioritási szintek szabályozzák a végponthoz tartozó műveletek prioritását. Minden beszélgetés két beszélgetési végpontot tartalmaz:
A kezdeményező beszélgetési végpontja a beszélgetés egyik oldalát társítja a kezdeményező szolgáltatáshoz és a kezdeményezői üzenetsorhoz. Az indító beszélgetés végpontja akkor jön létre, amikor a BEGIN DIALOG utasítást futtatjuk. Az indító beszélgetés végpontjához tartozó műveletek a következők:
Küldés a kezdeményező szolgáltatástól.
A kezdeményező sorból fogadja.
A következő beszélgetőcsoportot a kezdeményező sorból kapni.
A célbeszélgetés végpontja a beszélgetés másik oldalát társítja a célszolgáltatáshoz és az üzenetsorhoz. A cél beszélgetés végpontját akkor hozza létre, amikor a beszélgetést az üzenet küldésére használják a cél sorba. A cél beszélgetés végpontjához tartozó műveletek a következők:
A célsorból fogad.
Küldött a célszolgáltatástól.
A következő beszélgetőcsoportot a cél sorból kapni.
A Service Broker a beszélgetési végpontok létrehozásakor hozzárendeli a beszélgetési prioritási szinteket. A beszélgetési végpont megőrzi a prioritási szintet, amíg a beszélgetés véget nem ér. Új prioritások vagy a meglévő prioritások módosításai nem kerülnek a meglévő beszélgetésekre.
A Service Broker egy beszélgetés végpontját a beszélgetés prioritásának szintjét rendeli ki attól a beszélgetés prioritásából, amelynek szerződése és szolgáltatási kritériumai a leginkább megfelelnek a végpont tulajdonságainak. Az alábbi táblázat a találati sorrendet mutatja:
| Üzemeltetési szerződés | Helyi szolgáltatás üzemeltetése | Távoli szolgáltatás üzemeltetése |
|---|---|---|
| Szerződésnév | LocalServiceName | RemoteServiceName |
| Szerződésnév | LocalServiceName | BÁRMELY |
| Szerződésnév | BÁRMELY | RemoteServiceName |
| Szerződésnév | BÁRMELY | BÁRMELY |
| BÁRMELY | LocalServiceName | RemoteServiceName |
| BÁRMELY | LocalServiceName | BÁRMELY |
| BÁRMELY | BÁRMELY | RemoteServiceName |
| BÁRMELY | BÁRMELY | BÁRMELY |
A Service Broker először olyan prioritást keres, amelynek meghatározott szerződése, helyi szolgáltatása és távoli szolgáltatása megegyezik a művelet által használt szolgáltatással. Ha nem talál ilyen megoldást, a Service Broker olyan prioritást keres, amely szerződéssel és helyi szolgáltatással egyezik azokkal a művelet által használt szolgáltatásokkal, és ahol a távoli szolgáltatás ANY-ként van megadva. Ez minden változatra is fennmarad, amelyek az elsőbbségi táblázatban szerepelnek. Ha nem talál egyezést, a műveletnek alapértelmezett 5-ös prioritása lesz.
A Service Broker függetlenül rendel prioritási szintet minden beszélgetés végpontjához. Ha azt szeretné, hogy a Service Broker prioritási szinteket rendeljen a kezdeményezőhöz és a cél beszélgetési végpontokhoz is, győződjön meg arról, hogy mindkét végpontot lefedik a beszélgetési prioritások. Ha a kezdeményező és a cél beszélgetési végpontok külön adatbázisokban találhatók, minden adatbázisban létre kell hoznia a beszélgetési prioritásokat. Általában ugyanaz a prioritási szint van mindkét beszélgetés végpontjához, de különböző prioritási szinteket is beállíthatsz.
A prioritási szintek mindig azokra a műveletekre lesznek alkalmazva, amelyek üzeneteket vagy beszélgetéscsoport-azonosítókat fogadnak egy üzenetsorból. Prioritási szinteket alkalmaznak akkor is, amikor üzeneteket továbbítanak az egyik Database Engine példányból a másikba.
Prioritási szinteket nem használnak üzenetek továbbításakor:
Egy olyan adatbázisból, ahol az HONOR_BROKER_PRIORITY adatbázis opció KIKAPCSOLVA. További információ: ALTER DATABASE SET Beállítások (Transact-SQL).
Ugyanabban a példányban lévő Database Engine szolgáltatásai között.
Az adatbázisban minden Service Broker műveletnek alapértelmezett 5 prioritása van, ha nem jött létre beszélgetés prioritásai az adatbázisban.
Permissions
A beszélgetés prioritásának létrehozásának engedélye alapértelmezés szerint a db_ddladmin vagy db_owner fix adatbázis szerepkör tagjai, valamint a rendszergazdi fix szerver szerepének a tagja. Alter engedély szükséges az adatbázishoz.
Examples
A. Prioritási szintet kell kijelölni mindkét beszélgetés irányába.
Ez a két beszélgetési prioritás biztosítja, hogy minden olyan művelet, amely az között SimpleContract és a között TargetService használInitiatorAService, 3. prioritási szintet kapjon.
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. Minden szerződést használó beszélgetés prioritási szintjének meghatározása
Minden olyan műveletnek, amely szerződést használ, az -7nek nevezett prioritási szintet SimpleContract rendel . Ez feltételezi, hogy nincs más prioritás, amely mindkettőt SimpleContract meghatározná, és nem egy helyi vagy távoli szolgáltatást.
CREATE BROKER PRIORITY SimpleContractDefaultPriority
FOR CONVERSATION
SET (CONTRACT_NAME = SimpleContract,
LOCAL_SERVICE_NAME = ANY,
REMOTE_SERVICE_NAME = ANY,
PRIORITY_LEVEL = 7);
C. Egy adatbázis alapprioritási szintjének beállítása.
Két konkrét szolgáltatás számára határozza meg a beszélgetés prioritásait, majd egy olyan beszélgetésprioritást határoz meg, amely megfelel az összes többi beszélgetés végpontjának. Ez nem helyettesíti az alapértelmezett prioritást, amely mindig 5, de minimalizálja az alapértelmezett elemek számát.
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. Három prioritási szint létrehozása egy célszolgáltatás számára szolgáltatások használatával
Támogatja egy olyan rendszert, amely három szintű teljesítményt nyújt: Arany (magas), Ezüst (közepes) és Bronz (alacsony). Van egy szerződés, de minden szintnek külön kezdeményező szolgáltatása van. Minden indító szolgáltatás kommunikál egy központi célszolgáltatással.
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. Három prioritási szint létrehozása több szolgáltatás számára szerződések alapján
Támogatja egy olyan rendszert, amely három szintű teljesítményt nyújt: Arany (magas), Ezüst (közepes) és Bronz (alacsony). Minden szintnek külön szerződése van. Ezek a prioritások minden olyan szolgáltatásra vonatkoznak, amelyekre a szerződéseket használó beszélgetések hivatkoznak.
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);
Kapcsolódó tartalom
- ALTER BROKER PRIORITY (Transact-SQL)
- BEGIN DIALOG CONVERSATION (Transact-SQL)
- CREATE CONTRACT (Transact-SQL)
- CREATE QUEUE (Transact-SQL)
- CREATE SERVICE (Transact-SQL)
- DROP BROKER PRIORITY (Transact-SQL)
- GET CONVERSATION GROUP (Transact-SQL)
- RECEIVE (Transact-SQL)
- SEND (Transact-SQL)
- sys.conversation_priorities (Transact-SQL)