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

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)nonAzure SQL DatabasenonAzure SQL Data Warehouse nonParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Crée un nouveau type de message.Creates a new message type. Un type de message définit le nom d'un message et la validation effectuée par Service BrokerService Broker sur les messages portant ce nom.A message type defines the name of a message and the validation that Service BrokerService Broker performs on messages that have that name. Les deux parties d'une conversation doivent définir les mêmes types de messages.Both sides of a conversation must define the same message types.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

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

ArgumentsArguments

message_type_namemessage_type_name
Nom du type de message à créer.Is the name of the message type to create. Un nouveau type de message est créé dans la base de données active et possédé par le principal spécifié dans la clause AUTHORIZATION.A new message type is created in the current database and owned by the principal specified in the AUTHORIZATION clause. Les noms du serveur, de la base de données et du schéma ne peuvent pas être spécifiés.Server, database, and schema names cannot be specified. message_type_name peut contenir jusqu’à 128 caractères.The message_type_name can be up to 128 characters.

AUTHORIZATION owner_nameAUTHORIZATION owner_name
Définit le propriétaire du type de message sur l'utilisateur ou le rôle de base de données spécifié.Sets the owner of the message type to the specified database user or role. Quand l’utilisateur actuel est dbo ou sa, l’argument owner_name peut être le nom de n’importe quel utilisateur ou rôle valide.When the current user is dbo or sa, owner_name can be the name of any valid user or role. Sinon, owner_name doit être le nom de l’utilisateur actuel, le nom d’un utilisateur pour lequel l’utilisateur actuel possède l’autorisation IMPERSONATE ou le nom d’un rôle auquel appartient l’utilisateur actuel.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. Lorsque cette clause est ignorée, le type de message appartient à l'utilisateur actuel.When this clause is omitted, the message type belongs to the current user.

VALIDATIONVALIDATION
Spécifie comment Service BrokerService Broker valide le corps des messages de ce type.Specifies how Service BrokerService Broker validates the message body for messages of this type. Lorsque cette clause n'est pas spécifiée, la validation par défaut est NONE.When this clause is not specified, validation defaults to NONE.

AucuneNONE
Spécifie qu'aucune validation n'est réalisée.Specifies that no validation is performed. Le corps du message peut contenir des données ou avoir la valeur NULL.The message body can contain data, or it can be NULL.

EMPTYEMPTY
Spécifie que le corps du message doit avoir la valeur NULL.Specifies that the message body must be NULL.

WELL_FORMED_XMLWELL_FORMED_XML
Spécifie que le corps du message doit contenir du code XML correct.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
Spécifie que le corps du message doit contenir du code XML conforme à un schéma de la collection de schémas spécifiée. L’argument schema_collection_name doit représenter le nom d’une collection de schémas XML existante.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.

Notes Remarks

Service BrokerService Broker valide les messages entrants. validates incoming messages. Lorsqu'un message contient un corps de message non conforme au type de validation spécifié, Service BrokerService Broker ignore le message non valide et retourne un message d'erreur au service émetteur du message.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.

Les deux parties d'une conversation doivent définir le même nom pour un type de message.Both sides of a conversation must define the same name for a message type. Pour faciliter le dépannage, les deux parties d'une conversation spécifient généralement la même validation pour le type de message, bien que Service BrokerService Broker ne l'impose pas.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.

Il est possible qu'un type de message ne soit pas un objet temporaire.A message type can not be a temporary object. Les noms de type de message commençant par # sont autorisés, mais ils représentent des objets permanents.Message type names starting with # are allowed, but are permanent objects.

AutorisationsPermissions

L’autorisation de création d’un type de message est accordée par défaut aux membres du rôle de base de données fixe db_ddladmin ou db_owner et aux membres du rôle serveur fixe 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.

L’autorisation REFERENCES pour un type de message est accordée par défaut au propriétaire du type de message, aux membres du rôle de base de données fixe db_owner et aux membres du rôle serveur fixe 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.

Lorsque l'instruction CREATE MESSAGE TYPE spécifie une collection de schémas, l'utilisateur exécutant l'instruction doit disposer d'une autorisation REFERENCES sur la collection de schémas spécifiée.When the CREATE MESSAGE TYPE statement specifies a schema collection, the user executing the statement must have REFERENCES permission on the schema collection specified.

ExemplesExamples

A.A. Création d'un type de message contenant du code XML correctCreating a message type containing well-formed XML

L'exemple suivant crée un type de message contenant du code XML correct.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. Création d'un type de message contenant du code XML typéCreating a message type containing typed XML

L'exemple suivant crée un type de message pour un rapport de frais encodé en XML.The following example creates a message type for an expense report encoded in XML. L'exemple crée une collection de schémas XML contenant le schéma d'un rapport de frais simple.The example creates an XML schema collection that holds the schema for a simple expense report. L'exemple crée ensuite un type de message qui valide les messages par rapport au schéma.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. Création d'un type de message pour un message videCreating a message type for an empty message

L'exemple suivant crée un type de message avec un encodage vide.The following example creates a new message type with empty encoding.

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

D.D. Création d'un type de message contenant des données binairesCreating a message type containing binary data

L'exemple suivant crée un type de message qui contient des données binaires.The following example creates a new message type to hold binary data. Étant donné que le message contient des données non XML, le type de message spécifie le type de validation NONE.Because the message will contain data that is not XML, the message type specifies a validation type of NONE. Notez que dans ce cas, l'application qui reçoit un message de ce type doit vérifier que le message contient des données et que ces dernières sont du type attendu.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 ;  

Voir aussiSee 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)