Bagikan melalui


BUAT JENIS PESAN (Transact-SQL)

Berlaku untuk: SQL Server Azure SQL Managed Instance

Membuat jenis pesan baru. Jenis pesan menentukan nama pesan dan validasi yang dilakukan Service Broker pada pesan yang memiliki nama tersebut. Kedua sisi percakapan harus menentukan jenis pesan yang sama.

Konvensi sintaks transact-SQL

Sintaksis

CREATE MESSAGE TYPE message_type_name  
    [ AUTHORIZATION owner_name ]  
    [ VALIDATION = {  NONE  
                    | EMPTY   
                    | WELL_FORMED_XML  
                    | VALID_XML WITH SCHEMA COLLECTION schema_collection_name  
                   } ]  
[ ; ]  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

message_type_name
Adalah nama jenis pesan yang akan dibuat. Jenis pesan baru dibuat dalam database saat ini dan dimiliki oleh prinsipal yang ditentukan dalam klausul OTORISASI. Nama server, database, dan skema tidak dapat ditentukan. message_type_name dapat mencapai 128 karakter.

owner_name OTORISASI
Mengatur pemilik jenis pesan ke pengguna atau peran database yang ditentukan. Ketika pengguna saat ini adalah dbo atau sa, owner_name dapat menjadi nama pengguna atau peran yang valid. Jika tidak, owner_name harus menjadi nama pengguna saat ini, nama pengguna yang pengguna saat ini memiliki izin IMPERSONATE, atau nama peran tempat pengguna saat ini berada. Ketika klausa ini dihilangkan, jenis pesan milik pengguna saat ini.

VALIDASI
Menentukan bagaimana Service Broker memvalidasi isi pesan untuk pesan jenis ini. Ketika klausa ini tidak ditentukan, validasi default ke NONE.

NONE
Menentukan bahwa tidak ada validasi yang dilakukan. Isi pesan dapat berisi data, atau bisa NULL.

KOSONG
Menentukan bahwa isi pesan harus NULL.

WELL_FORMED_XML
Menentukan bahwa isi pesan harus berisi XML yang terbentuk dengan baik.

VALID_XML DENGAN schema_collection_name KOLEKSI SKEMA
Menentukan bahwa isi pesan harus berisi XML yang mematuhi skema dalam kumpulan skema yang ditentukan Schema_collection_name harus merupakan nama kumpulan skema XML yang ada.

Keterangan

Service Broker memvalidasi pesan masuk. Ketika pesan berisi isi pesan yang tidak mematuhi jenis validasi yang ditentukan, Service Broker membuang pesan yang tidak valid dan mengembalikan pesan kesalahan ke layanan yang mengirim pesan.

Kedua sisi percakapan harus menentukan nama yang sama untuk jenis pesan. Untuk membantu pemecahan masalah, kedua sisi percakapan biasanya menentukan validasi yang sama untuk jenis pesan, meskipun Service Broker tidak mengharuskan kedua sisi percakapan menggunakan validasi yang sama.

Tipe pesan tidak bisa menjadi objek sementara. Nama jenis pesan yang dimulai diperbolehkan # , tetapi merupakan objek permanen.

Izin

Izin untuk membuat jenis pesan default kepada anggota peran database tetap db_ddladmin atau db_owner dan peran server tetap sysadmin .

Izin REFERENSI untuk jenis pesan default ke pemilik jenis pesan, anggota peran database tetap db_owner , dan anggota peran server tetap sysadmin .

Ketika pernyataan CREATE MESSAGE TYPE menentukan kumpulan skema, pengguna yang menjalankan pernyataan harus memiliki izin REFERENCES pada kumpulan skema yang ditentukan.

Contoh

J. Membuat jenis pesan yang berisi XML yang dibentuk dengan baik

Contoh berikut membuat jenis pesan baru yang berisi XML yang terbentuk dengan baik.

CREATE MESSAGE TYPE  
  [//Adventure-Works.com/Expenses/SubmitExpense]  
  VALIDATION = WELL_FORMED_XML ;     

B. Membuat jenis pesan yang berisi XML yang dititik

Contoh berikut membuat jenis pesan untuk laporan pengeluaran yang dikodekan dalam XML. Contoh membuat koleksi skema XML yang menyimpan skema untuk laporan pengeluaran sederhana. Contoh kemudian membuat jenis pesan baru yang memvalidasi pesan terhadap skema.

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="https://Adventure-Works.com/schemas/expenseReport"  
     xmlns:expense="https://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. Membuat jenis pesan untuk pesan kosong

Contoh berikut membuat jenis pesan baru dengan pengodean kosong.

CREATE MESSAGE TYPE  
    [//Adventure-Works.com/Expenses/SubmitExpense]  
    VALIDATION = EMPTY ;  

D. Membuat jenis pesan yang berisi data biner

Contoh berikut membuat jenis pesan baru untuk menyimpan data biner. Karena pesan akan berisi data yang bukan XML, jenis pesan menentukan jenis NONEvalidasi . Perhatikan bahwa, dalam hal ini, aplikasi yang menerima pesan jenis ini harus memverifikasi bahwa pesan berisi data, dan bahwa data adalah jenis yang diharapkan.

CREATE MESSAGE TYPE  
    [//Adventure-Works.com/Expenses/ReceiptImage]  
    VALIDATION = NONE ;  

Lihat Juga

UBAH JENIS PESAN (Transact-SQL)
DROP MESSAGE TYPE (Transact-SQL)
EVENTDATA (Transact-SQL)