Tworzenie KONTRAKTU (Transact-SQL)
Tworzy nowy kontrakt.kontrakt Określa typy wiadomości, które są używane w Service Broker konwersacji i określa, która strona konwersacji można wysyłać wiadomości tego typu.Każda z nich wynika kontrakt.Inicjujący usługa Określa kontrakt dla konwersacji podczas uruchamiania konwersacji.miejsce doceloweusługa określa kontrakty, które miejsce doceloweusługa akceptuje konwersacje dla.
Składnia
CREATE CONTRACT contract_name
[ AUTHORIZATION owner_name ]
( { { message_type_name | [ DEFAULT ] }
SENT BY { INITIATOR | TARGET | ANY }
} [ ,...n] )
[ ; ]
Argumenty
contract_name
Jest to nazwa kontrakt do utworzenia.Nowy kontrakt jest tworzony w bieżącej bazie danych i posiadanych przez głównego zobowiązanego, określonych w klauzulaautoryzacji.Nie można określić nazwy serwera, bazy danych i schematu.contract_name Może mieć maksymalnie 128 znaków.Ostrzeżenie
Nie należy tworzyć wykorzystuje słowo kluczowe kontrakt istnieją dla contract_name.Po określeniu DOWOLNE nazwy kontrakt w tworzenie priorytet BROKER priorytet uznaje się dla wszystkich umów.Nie jest ograniczony do kontrakt , którego nazwa jest dowolny.
AUTORYZACJAowner_name
Ustawia właściciela kontrakt określonej bazy danych użytkownika lub roli.Jeśli bieżący użytkownik jest dbo lub sa, owner_name może być nazwa użytkownika jest nieprawidłowe lub roli.W przeciwnym razie owner_name musi mieć nazwę bieżącego użytkownika, nazwy użytkownika bieżącego użytkownika ma personifikować uprawnienia lub nazwę roli, do której należy użytkownik bieżący.Jeżeli pominięto tej klauzula kontrakt należy do bieżącego użytkownika.message_type_name
Nazwa typ komunikatu ma być dołączone jako część kontrakt.WYSŁANE PRZEZ
Określa, który punkt końcowy może wysłać wiadomość o wskazanym typ komunikatu.Kontrakty dokumentu wiadomości, które umożliwia konwersacje określonych usług.Każda z nich ma dwa punkty końcowe: inicjatora punkt końcowy, usługa uruchomiona konwersacji oraz miejsce docelowe punkt końcowy, usługa skontaktowanie się z inicjatora.INICJATOR
Wskazuje, że tylko inicjatora rozmowy można wysyłać wiadomości o określonym typ komunikatu.usługa uruchamiana konwersacji jest określany jako inicjatora konwersacji.DOCELOWA
Wskazuje, że tylko od miejsce docelowe konwersacji można wysyłać wiadomości o określonym typ komunikatu.usługa , która akceptuje konwersacji, która została uruchomiona przez inną usługa nazywa się miejsce docelowe konwersacji.WSZELKIE
Wskazuje, że wiadomości tego typu mogą być wysyłane przez inicjatora i miejsce docelowe.[ DOMYŚLNIE]
Wskazuje, że kontrakt obsługuje wiadomości, domyślna typ komunikatu.Domyślnie wszystkie bazy danych zawierają typ komunikatu o nazwie domyślne.Sprawdzanie poprawności i brak korzysta z tego typ komunikatu .W kontekście niniejszej klauzuladomyślnie nie jest słowem kluczowym i musi być rozdzielany jako identyfikator.Microsoft SQL Server zawiera także domyślne kontrakt , który określa domyślny typ komunikatu.
Uwagi
Kolejność typów wiadomości w kontrakt nie ma znaczenia.Po otrzymaniu pierwszej wiadomości miejsce docelowe Service Broker pozwala na dowolnej stronie konwersacji do wysyłania wiadomości dozwolone dla tej strony konwersacji w dowolnym czas.Na przykład, jeśli inicjatora rozmowy można przesłać typ komunikatu //Adventure-Works.com/Expenses/SubmitExpense, Service Broker umożliwia inicjatora wysłać dowolną liczbę SubmitExpense wiadomości podczas konwersacji.
Nie można zmienić typy wiadomości i wskazówkami w kontrakt .Aby zmienić autoryzacji dla kontrakt, użyj autoryzacji zmienić instrukcja.
kontrakt musi umożliwiać inicjatora do wysyłania wiadomości.Tworzenie zamówienia instrukcja nie powiedzie się, gdy kontrakt nie zawiera co najmniej jeden typ komunikatu , który jest wysłane przez dowolny lub wysłane przez INICJATORA.
Niezależnie od kontrakt usługa można zawsze odbierać typy wiadomości https://schemas.microsoft.com/SQL/ServiceBroker/DialogTimer, https://schemas.microsoft.com/SQL/ServiceBroker/Error, i **https://schemas.microsoft.com/SQL/ServiceBroker/EndDialog**.Service Brokerużywa tych typów wiadomości dla komunikatów do aplikacji.Aby uzyskać więcej informacji o typach wiadomości udostępniają broker, zobacz Komunikaty systemowe Broker.
kontrakt nie może być tymczasowy obiekt.Począwszy od # are nazw kontraktu dozwolone, ale są trwałe obiekty.
Uprawnienia
Domyślnie członkowie db_ddladmin lub db_owner ról stałej bazy danych i sysadmin stała rola serwera można utworzyć umów.
Domyślnie właścicielem kontrakt, członkowie db_ddladmin lub db_owner stałe role bazy danych i członkowie sysadmin stała rola serwera ma uprawnienia do odwołania w kontrakt.
Użytkownik, wykonywania Umowy tworzenie instrukcja musi mieć uprawnienia odwołania na wszystkie typy wiadomości określone.
Przykłady
A.Tworzenie kontrakt
Poniższy przykład tworzy wydatków zwrotu kosztów kontrakt w oparciu o trzy typy komunikatów.
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
) ;
Zobacz także