Format WSDL par défaut

Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.

Le format WSDL par défaut est retourné lorsque la chaîne d'arguments wsdl est transmise à un point de terminaison HTTP SOAP exécuté sur une instance de SQL Server, par exemple : http://MyServer/MyEndpoint/sql?wsdl.

Pour les documents WSDL par défaut, les éléments de paramètres contiennent des mappages des types provenant des mappages WSDL sqltypes:type aux types de données système SQL Server. Pour plus d'informations sur ces mappages, consultez Mappage des types de données dans les services Web XML natifs.

Le document WSDL par défaut généré par un point de terminaison spécifie le type de paramètres en faisant référence à l'un des types définis dans la rubrique Mappages des types de données ou a des sous-types de ces types, puis en ajoutant des restrictions supplémentaires. Pour tous les types de chaîne et binaires, le format WSDL par défaut retourné par le point de terminaison inclut un sous-type qui contient la facette XSD maxLength pour spécifier le nombre d'octets ou de caractères.

La facette maxLength n'est pas générée pour les types de longueur variable qui sont déclarés avec le spécificateur (max). Pour les types de données decimal et numeric, le format WSDL par défaut génère un sous-type qui inclut les facettes XSD totalDigits et fractionDigits, qui décrivent la précision et l'échelle du paramètre.

Mappages de types SQL Server à Common Language Runtime pour WSDL par défaut

Les instances WSDL par défaut prennent en charge le mappage des types de données SQL Server aux types CLR (Common Language Runtime) fournis dans Microsoft.NET Framework 2.0. Comme certains types de données CLR intégrés ne correspondent pas correctement aux types de données SQL Server, l'espace de noms System.Data.SqlTypes est fourni dans .NET Framework 2.0. Ceci active un système de types managés capable de traiter spécifiquement de nombreuses facettes du système de types de données SQL Server qui ne peut pas être mappé autrement dans les types XSD.

Pour la version .NET Framework 2.0, l'outil Web Services Definition Language Tool (Wsdl.exe) possède une prise en charge intégrée pour générer les mappages appropriés de SQL Server à CLR pour les instances WSDL par défaut. Cette prise en charge est disponible si vous utilisez Wsdl.exe à l'invite de commandes ou si vous ajoutez une référence Web à un projet Visual Studio 2005.

Dans les instances WSDL générées par l'exploitation de cette prise en charge des mappages de types, tous les types de données SQL Server sont codés en déclarant et en utilisant un URI d'espace de noms (https://schemas.microsoft.com/sqlserver/2004/sqltypes) et son préfixe correspondant (sqltypes). Le tableau suivant illustre comment les mappages de **sqltype:**type dans les instances WSDL générées par le biais de l'outil Wsdl.exe sont mappés à leurs types CLR correspondants.

Élément de type WSDL

Type CLR

sqltypes:char

System.Data.SqlTypes.SqlString

sqltypes:nchar

System.Data.SqlTypes.SqlString

sqltypes:varchar

System.Data.SqlTypes.SqlString

sqltypes:nvarchar

System.Data.SqlTypes.SqlString

sqltypes:text

System.Data.SqlTypes.SqlString

sqltypes:ntext

System.Data.SqlTypes.SqlString

sqltypes:varbinary

System.Data.SqlTypes.SqlBinary

sqltypes:binary

System.Data.SqlTypes.SqlBinary

sqltypes:image

System.Data.SqlTypes.SqlBinary

sqltypes:timestamp

System.Byte[]

sqltypes:timestampNumeric

System.Int64

sqltypes:decimal

System.Data.SqlTypes.SqlDecimal

sqltypes:numeric

System.Data.SqlTypes.SqlDecimal

sqltypes:bigint

System.Data.SqlTypes.SqlInt64

sqltypes:int

System.Data.SqlTypes.SqlInt32

sqltypes:smallint

System.Data.SqlTypes.SqlInt16

sqltypes:tinyint

System.Data.SqlTypes.SqlByte

sqltypes:bit

System.Data.SqlTypes.SqlBoolean

sqltypes:float

System.Data.SqlTypes.SqlDouble

sqltypes:real

System.Data.SqlTypes.SqlSingle

sqltypes:datetime

System.Data.SqlTypes.SqlDateTime

sqltypes:smalldatetime

System.Data.SqlTypes.SqlDateTime

sqltypes:money

System.Data.SqlTypes.SqlMoney

sqltypes:smallmoney

System.Data.SqlTypes.SqlMoney

sqltypes:uniqueidentifier

System.Data.SqlTypes.SqlGuid

sqltypes:xml

System.Xml.XmlNode[]1

sqltypes:sqlDbType="Sql_Variant"

System.Object

sqltypes:sqlDbType="Udt"

System.Xml.XmlElement2

sqltypes:sqlDbType="Structured" 

System.Data.DataSet

1 Mappé au wrapper de classe pour un tableau d'objets System.Xml.XmlNode. La classe du wrapper est nommée xml pour les paramètres XML non typés, mais utilise un nom généré pour les paramètres XML typés.

2 Mappé à un wrapper de classe autour d'un unique objet System.Xml.XmlElement utilisant un nom généré.

Traitement du type de données xml dans WSDL par défaut

Lorsque les paramètres du type de données xml sont définis dans le format WSDL par défaut, ils sont mappés au type de données WSDL sqltypes:xml. Ceci permet de spécifier un code XML correct sans validation supplémentaire de contenu ou de schéma. Pour plus d'informations, consultez Implémentation de XML dans SQL Server

Pour les paramètres du type de données xml liés à un espace de noms XML, le document WSDL par défaut génère un élément <xsd:complexType> contenant des restrictions sur le type sqltypes:xml. À son tour, le code XML typé spécifie le type xsd:any comme règle de restriction. Comme illustré dans l'exemple suivant, cette restriction spécifie à son tour l'attribut processContents en définissant sa valeur sur strict et spécifie également l'attribut namespace en définissant sa valeur sur une liste des espaces de noms XML correspondants associés à la collection de schémas à laquelle le code XML typé est lié.

<xsd:element name="xmlVal" minOccurs="1" maxOccurs="1" nillable="true">
    <xsd:complexType >
        <xsd:restriction base="sqltypes:xml">
             <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="strict" namespace="NS1 NS2 ...." /> 
        </xsd:restriction>
    </xsd:complexType>
</xsd:element>