CREATE MESSAGE TYPE(Transact-SQL)CREATE MESSAGE TYPE (Transact-SQL)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

새 메시지 유형을 만듭니다.Creates a new message type. 메시지 유형은 메시지의 이름과 Service BrokerService Broker가 해당 이름을 가진 메시지에서 수행하는 유효성 검사를 정의합니다.A message type defines the name of a message and the validation that Service BrokerService Broker performs on messages that have that name. 대화의 양 측면에 동일한 메시지 유형을 정의해야 합니다.Both sides of a conversation must define the same message types.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

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

인수Arguments

message_type_namemessage_type_name
생성할 메시지 유형의 이름입니다.Is the name of the message type to create. 새 메시지 유형은 현재 데이터베이스에 생성되고 AUTHORIZATION 절에서 지정한 보안 주체가 소유합니다.A new message type is created in the current database and owned by the principal specified in the AUTHORIZATION clause. 서버, 데이터베이스 및 스키마 이름은 지정될 수 없습니다.Server, database, and schema names cannot be specified. message_type_name 최대 128 자를 사용할 수 있습니다.The message_type_name can be up to 128 characters.

권한 부여 owner_nameAUTHORIZATION owner_name
메시지 유형의 소유자를 지정한 데이터베이스 사용자 또는 역할로 설정합니다.Sets the owner of the message type to the specified database user or role. 현재 사용자가 dbo 또는 sa, owner_name 유효한 사용자 또는 역할의 이름일 수 있습니다.When the current user is dbo or sa, owner_name can be the name of any valid user or role. 그렇지 않으면 owner_name 현재 사용자의 이름, 현재 사용자에 게에 대 한 IMPERSONATE 권한이 있는 사용자의 이름 또는 현재 사용자가 속해 있는 역할의 이름 이어야 합니다.Otherwise, owner_name must be the name of the current user, the name of a user who the current user has IMPERSONATE permission for, or the name of a role to which the current user belongs. 이 절을 생략하면 메시지 유형이 현재 사용자에 속합니다.When this clause is omitted, the message type belongs to the current user.

VALIDATIONVALIDATION
Service BrokerService Broker에서 이 유형의 메시지 본문 유효성을 검사하는 방법을 지정합니다.Specifies how Service BrokerService Broker validates the message body for messages of this type. 이 절을 지정하지 않으면 유효성 검사는 기본적으로 NONE으로 설정됩니다.When this clause is not specified, validation defaults to NONE.

없음NONE
유효성 검사가 수행되지 않도록 지정합니다.Specifies that no validation is performed. 메시지 본문은 데이터를 포함할 수도 있고 NULL일 수 있습니다.The message body can contain data, or it can be NULL.

EMPTYEMPTY
메시지 본문이 NULL이 되도록 지정합니다.Specifies that the message body must be NULL.

WELL_FORMED_XMLWELL_FORMED_XML
메시지 본문에 올바른 형식의 XML이 포함되도록 지정합니다.Specifies that the message body must contain well-formed XML.

VALID_XML WITH SCHEMA COLLECTION schema_collection_nameVALID_XML WITH SCHEMA COLLECTION schema_collection_name
메시지 본문의 지정 된 스키마 컬렉션의에서 스키마를 준수 하는 XML에 포함 되도록 지정 된 schema_collection_name 기존 XML 스키마 컬렉션의 이름 이어야 합니다.Specifies that the message body must contain XML that complies with a schema in the specified schema collection The schema_collection_name must be the name of an existing XML schema collection.

주의Remarks

Service BrokerService Broker는 들어오는 메시지의 유효성을 검사합니다. validates incoming messages. 메시지에 지정된 유효성 검사 유형을 준수하지 않는 메시지 본문이 있으면 Service BrokerService Broker는 잘못된 메시지를 삭제하고 메시지를 보낸 서비스로 오류 메시지를 반환합니다.When a message contains a message body that does not comply with the validation type specified, Service BrokerService Broker discards the invalid message and returns an error message to the service that sent the message.

대화의 양 측면에 동일한 메시지 유형 이름을 정의해야 합니다.Both sides of a conversation must define the same name for a message type. Service BrokerService Broker가 대화의 양 측면에서 같은 유효성 검사를 사용하도록 요구하지는 않지만 일반적으로 문제 해결에 도움을 주기 위해 대화의 양 측면에서 메시지 유형에 대해 동일한 유효성 검사를 지정합니다.To help troubleshooting, both sides of a conversation typically specify the same validation for the message type, although Service BrokerService Broker does not require that both sides of the conversation use the same validation.

메시지 유형은 임시 개체가 아닐 수 있습니다.A message type can not be a temporary object. 메시지 유형 이름은 부터는 # 수 있지만 영구 개체입니다.Message type names starting with # are allowed, but are permanent objects.

PermissionsPermissions

기본값의 구성원에 게 메시지 유형 생성 권한은 db_ddladmin 또는 db_owner 고정 데이터베이스 역할 및 sysadmin 고정된 서버 역할입니다.Permission for creating a message type defaults to members of the db_ddladmin or db_owner fixed database roles and the sysadmin fixed server role.

메시지 유형에 대 한 REFERENCES 권한은 기본적으로 멤버의 메시지 유형의 소유자는 db_owner 고정 데이터베이스 역할의 멤버는 sysadmin 고정된 서버 역할입니다.REFERENCES permission for a message type defaults to the owner of the message type, members of the db_owner fixed database role, and members of the sysadmin fixed server role.

CREATE MESSAGE TYPE 문에서 스키마 컬렉션을 지정하면 이 문을 실행하는 사용자는 지정된 스키마 컬렉션에 대해 REFERENCES 권한이 있어야 합니다.When the CREATE MESSAGE TYPE statement specifies a schema collection, the user executing the statement must have REFERENCES permission on the schema collection specified.

Examples

1.A. 올바른 형식의 XML을 포함하는 메시지 유형 만들기Creating a message type containing well-formed XML

다음 예에서는 올바른 형식의 XML을 포함하는 새로운 메시지 유형을 만듭니다.The following example creates a new message type that contains well-formed XML.

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

2.B. XML 유형을 포함하는 메시지 유형 만들기Creating a message type containing typed XML

다음 예에서는 XML로 인코딩된 경비 보고서에 대한 메시지 유형을 만듭니다.The following example creates a message type for an expense report encoded in XML. 이 예에서는 간단한 경비 보고서에 대한 스키마를 보유하는 XML 스키마 컬렉션을 만듭니다.The example creates an XML schema collection that holds the schema for a simple expense report. 그런 다음 스키마에 대해 메시지의 유효성을 검사하는 새로운 메시지 유형을 만듭니다.The example then creates a new message type that validates messages against the schema.

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 ;  

3.C. 빈 메시지에 대한 메시지 유형 만들기Creating a message type for an empty message

다음 예에서는 빈 인코딩으로 새로운 메시지 유형을 만듭니다.The following example creates a new message type with empty encoding.

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

4.D. 이진 데이터를 포함하는 메시지 유형 만들기Creating a message type containing binary data

다음 예에서는 이진 데이터를 보유하는 새로운 메시지 유형을 만듭니다.The following example creates a new message type to hold binary data. 메시지에는 XML이 아닌 데이터가 포함되므로 메시지 유형은 유효성 검사 유형을 NONE으로 지정합니다.Because the message will contain data that is not XML, the message type specifies a validation type of NONE. 이런 경우 이 유형의 메시지를 받는 응용 프로그램은 메시지에 데이터가 있는지, 데이터가 예상된 유형인지를 확인해야 합니다.Notice that, in this case, the application that receives a message of this type must verify that the message contains data, and that the data is of the type expected.

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

관련 항목:See Also

ALTER MESSAGE type( Transact SQL ) ALTER MESSAGE TYPE (Transact-SQL)
DROP MESSAGE type( Transact SQL ) DROP MESSAGE TYPE (Transact-SQL)
EVENTDATA(Transact-SQL)EVENTDATA (Transact-SQL)