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

ESTE TÓPICO APLICA-SE A:simSQL Server (a partir de 2008)nãoBanco de Dados SQL do Microsoft AzurenãoAzure SQL Data Warehouse nãoParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Cria um novo tipo de mensagem.Creates a new message type. Um tipo de mensagem define o nome de uma mensagem e a validação que o Service BrokerService Broker executa nas mensagens com esse nome.A message type defines the name of a message and the validation that Service BrokerService Broker performs on messages that have that name. Os dois lados de uma conversa devem definir os mesmos tipos de mensagem.Both sides of a conversation must define the same message types.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

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

ArgumentosArguments

message_type_namemessage_type_name
É o nome do tipo de mensagem a ser criado.Is the name of the message type to create. Um novo tipo de mensagem é criado no banco de dados atual e é de propriedade do principal especificado na cláusula AUTHORIZATION.A new message type is created in the current database and owned by the principal specified in the AUTHORIZATION clause. Os nomes de servidor, banco de dados e esquema não podem ser especificados.Server, database, and schema names cannot be specified. O message_type_name pode ter até 128 caracteres.The message_type_name can be up to 128 characters.

AUTHORIZATION owner_nameAUTHORIZATION owner_name
Define o proprietário do tipo de mensagem como o usuário ou a função do banco de dados especificado.Sets the owner of the message type to the specified database user or role. Quando o usuário atual é dbo ou sa, owner_name pode ser o nome de qualquer usuário ou função válida.When the current user is dbo or sa, owner_name can be the name of any valid user or role. Caso contrário, owner_name deverá ser o nome do usuário atual, o nome de um usuário para o qual o usuário atual tenha a permissão IMPERSONATE ou o nome de uma função à qual o usuário atual pertença.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. Quando esta cláusula é omitida, o tipo de mensagem pertence ao usuário atual.When this clause is omitted, the message type belongs to the current user.

VALIDATIONVALIDATION
Especifica como o Service BrokerService Broker valida o corpo da mensagem para mensagens desse tipo.Specifies how Service BrokerService Broker validates the message body for messages of this type. Quando esta cláusula não é especificada, a validação assume NONE como padrão.When this clause is not specified, validation defaults to NONE.

NenhumaNONE
Especifica que nenhuma validação é executada.Specifies that no validation is performed. O corpo da mensagem pode conter dados ou pode ser NULL.The message body can contain data, or it can be NULL.

EMPTYEMPTY
Especifica que o corpo da mensagem deve ser NULL.Specifies that the message body must be NULL.

WELL_FORMED_XMLWELL_FORMED_XML
Especifica que o corpo da mensagem deve conter XML bem formado.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
Especifica que o corpo da mensagem deve conter um XML que obedeça a um esquema na coleção de esquemas especificada. O schema_collection_name deve ser o nome de uma coleção de esquemas XML existente.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.

RemarksRemarks

O Service BrokerService Broker valida mensagens de entrada. Service BrokerService Broker validates incoming messages. Quando uma mensagem contém um corpo de mensagem que não obedece ao tipo de validação especificado, o Service BrokerService Broker descarta a mensagem inválida e retorna uma mensagem de erro ao serviço que enviou a mensagem.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.

Os dois lados de uma conversa devem definir o mesmo nome para um tipo de mensagem.Both sides of a conversation must define the same name for a message type. Para ajudar a solucionar problemas, os dois lados de uma conversa normalmente especificam a mesma validação para o tipo de mensagem, embora o Service BrokerService Broker não exija que os dois lados da conversa usem a mesma validação.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.

Um tipo de mensagem não pode ser um objeto temporário.A message type can not be a temporary object. Nomes de tipo de mensagem que começam com # são permitidos, mas são objetos permanentes.Message type names starting with # are allowed, but are permanent objects.

PermissõesPermissions

A permissão para criar um tipo de mensagem usa como padrão os membros das funções de banco de dados fixas db_ddladmin ou db_owner e da função de servidor fixa 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.

A permissão REFERENCES para um tipo de mensagem usa como padrão o proprietário do tipo de mensagem, os membros da função de banco de dados fixa db_owner e os membros da função de servidor fixa 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.

Quando a instrução CREATE MESSAGE TYPE especifica uma coleção de esquema, o usuário que executa a instrução deve ter a permissão REFERENCES na coleção de esquema especificada.When the CREATE MESSAGE TYPE statement specifies a schema collection, the user executing the statement must have REFERENCES permission on the schema collection specified.

ExemplosExamples

A.A. Criando um tipo de mensagem que contém XML bem formadoCreating a message type containing well-formed XML

O exemplo a seguir cria um novo tipo de mensagem que contém XML bem formado.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 ;     

B.B. Criando um tipo de mensagem que contém XML com tipoCreating a message type containing typed XML

O exemplo a seguir cria um tipo de mensagem para um relatório de despesas codificado em XML.The following example creates a message type for an expense report encoded in XML. Ele cria uma coleção de esquema XML que contém o esquema para um relatório de despesas simples.The example creates an XML schema collection that holds the schema for a simple expense report. Ele também cria um novo tipo de mensagem que valida mensagens no esquema.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 ;  

C.C. Criando um tipo de mensagem para uma mensagem vaziaCreating a message type for an empty message

O exemplo a seguir cria um novo tipo de mensagem com codificação vazia.The following example creates a new message type with empty encoding.

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

D.D. Criando um tipo de mensagem que contém dados bináriosCreating a message type containing binary data

O exemplo a seguir cria um novo tipo de mensagem para conter dados binários.The following example creates a new message type to hold binary data. Como a mensagem terá dados que não são XML, o tipo de mensagem especifica um tipo de validação de NONE.Because the message will contain data that is not XML, the message type specifies a validation type of NONE. Observe que, neste caso, o aplicativo que recebe uma mensagem desse tipo deve verificar se ela contém dados e se os dados são do tipo esperado.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 ;  

Consulte TambémSee 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)