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
Új szerződést hoz. A szerződés meghatározza, milyen üzenettípusokat használnak a Szolgáltatási Közvetítő beszélgetésben, és azt is, hogy a beszélgetés melyik oldala küldheti az ilyen típusú üzeneteket. Minden beszélgetés egy szerződést követ. A kezdeményező szolgáltatás meghatározza a beszélgetés szerződését, amikor a beszélgetés elkezdődik. A célszolgáltatás meghatározza azokat a szerződéseket, amelyekhez a célszolgáltatás elfogadja a beszélgetéseket.
Transact-SQL szintaxis konvenciók
Syntax
CREATE CONTRACT contract_name
[ AUTHORIZATION owner_name ]
( { { message_type_name | [ DEFAULT ] }
SENT BY { INITIATOR | TARGET | ANY }
} [ ,...n] )
[ ; ]
Arguments
contract_name
Ez a szerződés neve, amit létre kell hozni. Új szerződést hoznak létre a jelenlegi adatbázisban, amelyet a záradékban meghatározott AUTHORIZATION megbízó birtokol. Szerver-, adatbázis- és sémánnevek nem határozhatók meg. A contract_name akár 128 karakter is lehet.
Note
Ne készíts olyan szerződést, amely az ANY kulcsszót használja a contract_name számára. Ha egy szerződés nevéhez ANY jelölést adsz meg , CREATE BROKER PRIORITYakkor minden szerződésnél figyelembe veszik a prioritást. Nem korlátozódik olyan szerződésre, amelynek neve ANY.
AUTHORIZATION
owner_name
A szerződés tulajdonosát a megadott adatbázis-felhasználóhoz vagy szerephez állítja be. Ha a jelenlegi felhasználó dbo vagy sa, owner_name lehet bármely érvényes felhasználó vagy szerep neve. Ellenkező esetben owner_name a jelenlegi felhasználó neve, annak a felhasználónak a neve, akinek a jelenlegi felhasználónak megszemélyesülési engedélyei vannak, vagy annak a szerepnek a neve, amelyhez a jelenlegi felhasználó tartozik. Ha ezt a záradékot kihagyják, a szerződés a jelenlegi felhasználóé lesz.
message_type_name
Az üzenettípus neve a szerződés részeként szerepel.
KÜLDTE
Megadja, melyik végpont küldhet egy üzenetet a megadott típusú üzenetet. A szerződések dokumentálják azokat az üzeneteket, amelyeket a szolgáltatások használhatnak konkrét beszélgetésekhez. Minden beszélgetésnek két végpontja van: az indító végpont, a beszélgetést indító szolgáltatás, és a célvégpont , az a szolgáltatás, amellyel az induló kapcsolatba lép.
KEZDEMÉNYEZŐ
Azt jelzi, hogy csak a beszélgetés kezdeményezője küldhet a megadott típusú üzeneteket. A beszélgetést indító szolgáltatást a beszélgetés kezdeményezőjének nevezik.
CÉL
Azt jelzi, hogy csak a beszélgetés célpontja küldhet a megadott típusú üzeneteket. Az a szolgáltatás, amely elfogad egy másik szolgáltatás által indított beszélgetést, a beszélgetés célpontjának nevezik.
BÁRMELY
Jelzi, hogy az ilyen típusú üzeneteket mind az indító, mind a cél küldheti.
[ DEFAULT ]
Jelzi, hogy ez a szerződés támogatja az alapértelmezett üzenettípusú üzeneteket. Alapértelmezés szerint minden adatbázis tartalmaz egy üzenettípust, amelynek neve DEFAULT. Ez az üzenettípus a NONE validációját használja. E záradék kontextusában nem DEFAULT kulcsszó, és azonosítóként kell definálni. A Microsoft SQL Server egy DEFAULT szerződést is biztosít, amely meghatározza az DEFAULT üzenettípust.
Remarks
Az üzenettípusok sorrendje a szerződésben nem jelentős. Miután a célpont megkapta az első üzenetet, a Service Broker lehetővé teszi, hogy a beszélgetés bármelyik oldala bármikor küldjön bármely üzenetet, amely az adott oldalon engedélyezett. Például, ha a beszélgetés kezdeményezője Adventure-Works.com/Expenses/SubmitExpense típusú üzenetet tud küldeni, a Service Broker lehetővé teszi, hogy a kezdeményező bármilyen számú SubmitExpense üzenetet küldjön a beszélgetés során.
A szerződésben szereplő üzenettípusok és utasítások nem változtathatók. Szerződés megváltoztatásához AUTHORIZATION használja a ALTER AUTHORIZATION nyilatkozatot.
A szerződésnek engedélyeznie kell a kezdeményezőnek, hogy üzenetet küldjön. A CREATE CONTRACT kijelentés akkor bukik meg, ha a szerződés nem tartalmaz legalább egy üzenettípust, amelyet BÁRKI KÜLD VAGY INDÍTÓ KÜLD.
A szerződéstől függetlenül a szolgáltatás mindig kaphatja az üzenettípusokat https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer, https://schemas.microsoft.com/SQL/ServiceBroker/Error, és https://schemas.microsoft.com/SQL/ServiceBroker/EndDialog. A Service Broker ezeket az üzenettípusokat használja rendszerüzenetekhez az alkalmazásnak.
Egy szerződés nem lehet ideiglenes tárgy. A #-val kezdődő szerződésnevek megengedettek, de ezek állandó objektumok.
Permissions
Alapértelmezés szerint a db_ddladmin vagy db_owner fix adatbázis szerepek tagjai, valamint a rendszergazdi fix szerver szerep tagjai szerződéseket hozhatnak létre.
Alapértelmezés szerint a szerződés tulajdonosa, a db_ddladmin vagy db_owner fix adatbázis szerepének tagjai, valamint a rendszergazta-rendszer fix szerver tagjai HIVATKOZÁSI engedélyt kapnak egy szerződésen.
Az utasítást CREATE CONTRACT végrehajtó felhasználónak minden megadott üzenettípushoz REFERENCES jogosultsággal kell rendelkeznie.
Examples
A. Szerződés létrehozása
Az alábbi példa három üzenettípus alapján hozza létre a költségtérítési szerződést.
CREATE MESSAGE TYPE
[//Adventure-Works.com/Expenses/SubmitExpense]
VALIDATION = WELL_FORMED_XML ;
CREATE MESSAGE TYPE
[//Adventure-Works.com/Expenses/ExpenseApprovedOrDenied]
VALIDATION = WELL_FORMED_XML ;
CREATE MESSAGE TYPE
[//Adventure-Works.com/Expenses/ExpenseReimbursed]
VALIDATION= WELL_FORMED_XML ;
CREATE CONTRACT
[//Adventure-Works.com/Expenses/ExpenseSubmission]
( [//Adventure-Works.com/Expenses/SubmitExpense]
SENT BY INITIATOR,
[//Adventure-Works.com/Expenses/ExpenseApprovedOrDenied]
SENT BY TARGET,
[//Adventure-Works.com/Expenses/ExpenseReimbursed]
SENT BY TARGET
) ;