Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na:SQL ServerAzure
SQL Managed Instance
Vytváří novou smlouvu. Smlouva definuje typy zpráv používaných v konverzaci Service Broker a také určuje, která strana konverzace může odesílat zprávy tohoto typu. Každý rozhovor probíhá podle smlouvy. Úvodní služba specifikuje smlouvu na konverzaci, kdy konverzace začne. Cílová služba specifikuje smlouvy, pro které cílová služba přijímá konverzace.
Syntax
CREATE CONTRACT contract_name
[ AUTHORIZATION owner_name ]
( { { message_type_name | [ DEFAULT ] }
SENT BY { INITIATOR | TARGET | ANY }
} [ ,...n] )
[ ; ]
Arguments
contract_name
Je název smlouvy k vytvoření. Nová smlouva je vytvořena v aktuální databázi a je vlastněna hlavním subjektem uvedeným v klauzuli AUTHORIZATION . Názvy serverů, databází a schémat nelze specifikovat.
contract_name může mít až 128 znaků.
Poznámka:
Nevytvářejte smlouvu, která používá klíčové slovo ŽÁDNÉ pro contract_name. Když zadáte JAKÉKOLI pro název smlouvy v , CREATE BROKER PRIORITYpriorita se zvažuje pro všechny smlouvy. Není omezena pouze na smlouvu, jejíž jméno je JAKÉKOLI.
AUTHORIZATION
owner_name
Nastaví vlastníka smlouvy na určeného uživatele nebo roli databáze. Pokud je aktuální uživatel dbo nebo sa, může owner_name být jménem jakéhokoliv platného uživatele nebo role. Jinak musí owner_name být jméno aktuálního uživatele, jméno uživatele, pro kterého má aktuální uživatel oprávnění k impersonaci, nebo jméno role, ke které aktuální uživatel patří. Pokud je tato klauzule vynechána, smlouva patří aktuálnímu uživateli.
message_type_name
Je název typu zprávy, který má být zahrnut do smlouvy.
PŘEDAL
Specifikuje, který koncový bod může odeslat zprávu uvedeného typu zprávy. Smlouvy dokumentují zprávy, které mohou služby použít k vedení konkrétních rozhovorů. Každá konverzace má dva koncové body : iniciátorský koncový bod, službu, která konverzaci zahájila, a cílový koncový bod, službu, kterou iniciátor kontaktuje.
INICIÁTOR
Označuje, že pouze iniciátor konverzace může posílat zprávy určeného typu zprávy. Služba, která zahajuje konverzaci, se nazývá iniciátorem konverzace.
CÍL
Označuje, že pouze cílová osoba konverzace může posílat zprávy daného typu zprávy. Služba, která přijímá konverzaci zahájenou jinou službou, se označuje jako cíl konverzace.
Libovolný
Označuje, že zprávy tohoto typu mohou být odeslány jak iniciátorem, tak cílovým subjektem.
[ ] DEFAULT
Označuje, že tento kontrakt podporuje zprávy výchozího typu zprávy. Ve výchozím nastavení všechny databáze obsahují typ zprávy s názvem DEFAULT. Tento typ zprávy používá validaci ŽÁDNÉ. V kontextu této klauzule DEFAULT není klíčové slovo a musí být vymezeno jako identifikátor. Microsoft SQL Server také poskytuje smlouvuDEFAULT, která specifikuje typ zprávyDEFAULT.
Remarks
Pořadí typů zpráv ve smlouvě není významné. Poté, co cílová osoba obdrží první zprávu, Service Broker umožňuje obě straně konverzace kdykoli poslat jakoukoli zprávu povolenou pro danou stranu konverzace. Například pokud iniciátor konverzace může odeslat zprávu typu Adventure-Works.com/Expenses/SubmitExpense, Service Broker umožňuje iniciátorovi během konverzace poslat libovolný počet SubmitExpense zpráv.
Typy zpráv a pokyny ve smlouvě nelze měnit. Pro změnu AUTHORIZATION smlouvy použijte ALTER AUTHORIZATION prohlášení.
Smlouva musí umožnit iniciátorovi odeslat zprávu. Příkaz CREATE CONTRACT selže, pokud smlouva neobsahuje alespoň jeden typ zprávy, který je ODESLÁN NĚJAKÝM nebo ODESLÁN INICIÁTOREM.
Bez ohledu na smlouvu může služba vždy přijímat typy https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimerzpráv , https://schemas.microsoft.com/SQL/ServiceBroker/Error, a https://schemas.microsoft.com/SQL/ServiceBroker/EndDialog. Service Broker používá tyto typy zpráv pro systémové zprávy aplikaci.
Smlouva nemůže být dočasným předmětem. Názvy smluv začínající na # jsou povoleny, ale jsou trvalými objekty.
Permissions
Ve výchozím nastavení mohou členové rolí db_ddladmin nebo db_owner pevné databáze a role pevného správce systému vytvářet smlouvy.
Ve výchozím nastavení mají vlastník smlouvy, členové rolí db_ddladmin nebo db_owner pevné databáze a členové role správce pevného serveru oprávnění ODKAZOVAT ve smlouvě.
Uživatel provádějící CREATE CONTRACT příkaz musí mít oprávnění REFERENCES ke všem specifikovaným typům zpráv.
Examples
A. Vytvoření smlouvy
Následující příklad vytváří smlouvu o náhradě výdajů na základě tří typů zpráv.
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
) ;