WSDL padrão

Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.

O WSDL padrão é retornado quando a cadeia de argumentos wsdl é passada para um ponto de extremidade SOAP HTTP que está sendo executado em uma instância do SQL Server; por exemplo: http://MyServer/MyEndpoint/sql?wsdl.

Para documentos WSDL padrão, os elementos do parâmetro contêm mapeamentos de tipo dos mapeamentos sqltypes:type WSDL para tipos de dados do sistema do SQL Server. Para obter mais informações sobre esses mapeamentos, consulte Mapeamentos de tipo de dados em XML Web Services Nativos.

O documento WSDL padrão gerado por um ponto de extremidade especifica o tipo de parâmetro fazendo referência a um dos tipos definidos nos Mapeamentos de tipos de dados ou fazendo referência a subtipos desses tipos e, em seguida, adicionando restrições complementares. Para todos os tipos de cadeia de caracteres e binários, o WSDL padrão retornado pelo ponto de extremidade incluirá um subtipo que inclui a faceta maxLength do XSD para especificar o número de bytes ou caracteres.

A faceta maxLength não é gerada para tipos de comprimento de variável que são declarados com o especificador (max). Para os tipos de dados decimal e numeric, o WSDL padrão irá gerar um subtipo que inclui as facetas totalDigits e fractionDigits do XSD que descreverão a precisão e a escala do parâmetro.

Mapeamentos de tipo do SQL Server para o CLR para o WSDL padrão

Instâncias de WSDL padrão incluem suporte para mapear tipos de dados do SQL Server para tipos do CLR (Common Language Runtime) que são fornecidos no Microsoft .NET Framework 2.0. Como alguns tipos de dados do CLR internos não se alinham bem com os tipos de dados do SQL Server, o namespace System.Data.SqlTypes é fornecido no .NET Framework 2.0. Ele possibilita um sistema de tipos gerenciados que poderia manipular especificamente muitas das facetas do sistema de tipos de dados do SQL Server que, de outra forma, não poderiam ser mapeados nos tipos XSD.

Para a versão .NET Framework 2.0, a ferramenta WSDL (Web Services Definition Language, Wsdl.exe) tem suporte interno para a geração dos mapeamentos de tipos do SQL Server para o CLR apropriados para as instâncias do WSDL padrão. Esse suporte está disponível se você estiver usando o Wsdl.exe no prompt de comando ou através da adição de uma referência da Web para um projeto do Visual Studio 2005.

Nas instâncias da WSDL que são geradas através do uso desse suporte a mapeamento de tipo, todos os tipos de dados do SQL Server são codificados através da declaração e do uso de um URI de namespace (https://schemas.microsoft.com/sqlserver/2004/sqltypes) e seu prefixo correspondente (sqltypes). A seguinte tabela mostra como os mapeamentos **sqltype:**type em instâncias de WSDL geradas pela ferramenta Wsdl.exe são mapeados para os seus tipos CLR correspondentes.

Elemento do tipo WSDL

Tipo 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 mapeado para um invólucro de classe para uma matriz de objetos System.Xml.XmlNode. A classe de invólucro é nomeada xml para parâmetros XML sem tipo, mas usa um nome gerado para parâmetros XML tipados.

2 mapeado para uma classe de invólucro ao redor de um único objeto System.Xml.XmlElement que usa um nome gerado.

Como o tipo de dados xml é tratado no WSDL padrão

Quando são definidos parâmetros de tipo de dados xml no WSDL padrão, eles são mapeados para o tipo de dados sqltypes:xml do WSDL. Isto permite que qualquer XML formado seja especificado sem nenhum conteúdo adicional ou validação baseada em esquema. Para obter mais informações, consulte Implementando XML no SQL Server

Para parâmetros do tipo de dados xml associados a um namespace XML, o documento WSDL padrão gerará um elemento <xsd:complexType> que conterá restrições para o tipo sqltypes:xml. O XML tipado, por sua vez, especifica o tipo xsd:any como a regra de restrição. Conforme mostrado no seguinte exemplo, essa restrição, por sua vez, especificará o atributo processContents definindo seu valor como strict e também especificará o atributo namespace e definirá seu valor como uma lista de namespaces XML correspondentes associados à coleção do esquema à qual o XML tipado está ligado.

<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>