Utwórz typ komunikatu (Transact-SQL)
Tworzy nowy typ komunikatu.typ komunikatu definiuje nazwę wiadomości i sprawdzanie poprawności, Service Broker wykonuje na wiadomości, które mają tę nazwę.Obie strony konwersacji należy zdefiniować te same typy wiadomości.
Składnia
CREATE MESSAGE TYPE message_type_name
[ AUTHORIZATION owner_name ]
[ VALIDATION = { NONE
| EMPTY
| WELL_FORMED_XML
| VALID_XML WITH SCHEMA COLLECTION
schema_collection_name
} ]
[ ; ]
Argumenty
message_type_name
Jest nazwą typ komunikatu , aby utworzyć.Nowy typ komunikatu 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.message_type_name Może mieć maksymalnie 128 znaków.AUTORYZACJAowner_name
Ustawia właściciela typ komunikatu bazy danych określonego 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, nazwa użytkownika posiadającego uprawnienia PERSONIFIKUJ dla bieżącego użytkownika lub nazwę roli, do której należy użytkownik bieżący.Jeżeli pominięto tej klauzula typ komunikatu należy do bieżącego użytkownika.SPRAWDZANIE POPRAWNOŚCI
Określa, jak Service Broker sprawdza poprawność treści wiadomości dla wiadomości tego typu.Gdy nie określono tej klauzula , sprawdzania poprawności domyślnie brak.BRAK
Określa, że nie sprawdzanie poprawności jest wykonywane.Treść wiadomości może zawierać dane lub może mieć wartość NULL.PUSTE
Określa, że treść wiadomości musi mieć wartość NULL.WELL_FORMED_XML
Określa, że treść wiadomości może zawierać poprawnie sformułowany kod XML.VALID_XML Z KOLEKCJI SCHEMATUschema_collection_name
Określa, że treść wiadomości musi zawierać plik XML, który jest zgodny ze schematem określonym schematem w kolekcja schema_collection_name musi być nazwą istniejącego schematu XML kolekcja.
Uwagi
Service Brokersprawdza poprawność wiadomości przychodzących.Jeśli wiadomość zawiera treść wiadomości, które nie są zgodne z typ sprawdzania poprawności określonych, Service Broker odrzuca nieprawidłowy komunikat i zwraca komunikat o błędzie usługa , które wysłane wiadomości.
Obie strony konwersacji należy zdefiniować nazwę tego samego typ komunikatu.Aby pomóc w rozwiązywaniu problemów, obie strony konwersacji zazwyczaj określić tej samej sprawdzania poprawności dla typ komunikatu, chociaż Service Broker nie jest wymagane, że obie strony konwersacji za pomocą tej samej sprawdzania poprawności.
typ komunikatu nie może być tymczasowy obiekt.Wiadomości wpisz nazwy począwszy od # są dozwolone, ale są trwałe obiekty.
Uprawnienia
Uprawnienie do tworzenia wartości domyślnych dla członków typ komunikatu db_ddladmin lub db_owner ról stałej bazy danych i sysadmin stała rola serwera.
Domyślnie uprawnienie odwołania dla typ komunikatu właściciel typ komunikatu, członkowie db_owner rola bazy danychi członków stałych sysadmin stała rola serwera.
Podczas tworzenia wiadomości typu instrukcja określa schematu kolekcja, użytkownik, wykonywania instrukcja musi mieć uprawnienia odwołania określonego schematu kolekcja .
Przykłady
A.Tworzenie typ komunikatu , zawierające poprawnie sformułowany kod XML
Poniższy przykład tworzy nowy typ komunikatu , który zawiera poprawnie sformułowany kod XML.
CREATE MESSAGE TYPE
[//Adventure-Works.com/Expenses/SubmitExpense]
VALIDATION = WELL_FORMED_XML ;
B.Tworzenie typ komunikatu zawierające wpisany XML
Poniższy przykład tworzy raport z wydatków zakodowany w formacie XML typ komunikatu .W przykładzie przedstawiono tworzenie schematu XML kolekcja przechowujący schematu raport z wydatków proste.Przykład tworzy następnie nowego typ komunikatu , który sprawdza wiadomości względem schematu.
CREATE XML SCHEMA COLLECTION ExpenseReportSchema AS
N'<?xml version="1.0" encoding="UTF-16" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://Adventure-Works.com/schemas/expenseReport"
xmlns:expense="http://Adventure-Works.com/schemas/expenseReport"
elementFormDefault="qualified"
>
<xsd:complexType name="expenseReportType">
<xsd:sequence>
<xsd:element name="EmployeeName" type="xsd:string"/>
<xsd:element name="EmployeeID" type="xsd:string"/>
<xsd:element name="ItemDetail"
type="expense:ItemDetailType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ItemDetailType">
<xsd:sequence>
<xsd:element name="Date" type="xsd:date"/>
<xsd:element name="CostCenter" type="xsd:string"/>
<xsd:element name="Total" type="xsd:decimal"/>
<xsd:element name="Currency" type="xsd:string"/>
<xsd:element name="Description" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ExpenseReport" type="expense:expenseReportType"/>
</xsd:schema>' ;
CREATE MESSAGE TYPE
[//Adventure-Works.com/Expenses/SubmitExpense]
VALIDATION = VALID_XML WITH SCHEMA COLLECTION ExpenseReportSchema ;
C.Tworzenie typ komunikatu puste wiadomości
Poniższy przykład tworzy nowy typ komunikatu z kodowania puste.
CREATE MESSAGE TYPE
[//Adventure-Works.com/Expenses/SubmitExpense]
VALIDATION = EMPTY ;
D.Tworzenie typ komunikatu , zawierające dane binarne
Poniższy przykład tworzy nowy typ komunikatu do przechowywania danych binarnych.Ponieważ wiadomość będzie zawierać dane XML, typ komunikatu określa typ sprawdzania poprawności NONE.Należy zauważyć, że w tym przypadekaplikacji, która odbiera wiadomość tego typu należy sprawdzić czy wiadomość zawiera dane i że dane są typu oczekiwanego.
CREATE MESSAGE TYPE
[//Adventure-Works.com/Expenses/ReceiptImage]
VALIDATION = NONE ;