CREATE MESSAGE TYPE (Transact-SQL)
建立新的訊息類型。訊息類型會定義訊息的名稱以及 Service Broker 以這個名稱在訊息上所執行的驗證。交談的兩端必須定義相同的訊息類型。
- message_type_name
-
這是要建立的訊息類型名稱。新訊息類型會建立在目前的資料庫中,擁有者是 AUTHORIZATION 子句中所指定的主體。您不可指定伺服器、資料庫和結構描述名稱。message_type_name 最多可以有 128 個字元。
- AUTHORIZATION owner_name
-
將訊息類型的擁有者設為指定的資料庫使用者或角色。當目前的使用者是 dbo 或 sa 時,owner_name 可以是任何有效使用者或角色的名稱。否則,owner_name 必須是目前使用者的名稱、目前使用者有其 IMPERSONATE 權限的使用者名稱,或目前使用者所屬的角色名稱。當略過這個子句時,訊息類型會屬於目前的使用者。
- VALIDATION
-
指定 Service Broker 如何驗證這種類型之訊息的訊息主體。當沒有指定這個子句時,驗證的預設值便是 NONE。
- NONE
-
指定不執行任何驗證。訊息主體可包含任何資料,也可能是 NULL。
- EMPTY
-
指定訊息主體必須是 NULL。
- WELL_FORMED_XML
-
指定訊息主體必須包含格式正確的 XML。
- VALID_XML WITH SCHEMA COLLECTION schema_collection_name
-
指定訊息主體必須包含符合指定的結構描述集合中結構描述的 XML。schema_collection_name 必須是現有 XML 結構描述集合的名稱。
A. 建立包含格式正確之 XML 的訊息類型
下列範例會建立一個包含格式正確之 XML 的新訊息類型。
CREATE MESSAGE TYPE
[//Adventure-Works.com/Expenses/SubmitExpense]
VALIDATION = WELL_FORMED_XML ;
B. 建立包含 XML 類型的訊息類型
下列範例會建立用 XML 來編碼之費用報表的訊息類型。這個範例會建立一個 XML 結構描述集合來存放簡單費用報表的結構描述。之後,這個範例會建立一個比對結構描述來驗證訊息的新訊息類型。
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. 建立空訊息的訊息類型
下列範例會建立一個包含空白編碼的新訊息類型。
CREATE MESSAGE TYPE
[//Adventure-Works.com/Expenses/SubmitExpense]
VALIDATION = EMPTY ;
D. 建立包含二進位資料的訊息類型
下列範例會建立用來存放二進位資料的新訊息類型。由於訊息將包含不是 XML 的資料,因此,訊息類型會指定 NONE 驗證類型。請注意,在這個情況下,接收這種類型之訊息的應用程式必須確認訊息包含資料,且資料的類型符合預期。
CREATE MESSAGE TYPE
[//Adventure-Works.com/Expenses/ReceiptImage]
VALIDATION = NONE ;

