Поделиться через


WSDL-документ по умолчанию

В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется.

WSDL-документ по умолчанию возвращается, если строка аргумента wsdl передается на конечную точку HTTP SOAP, на которой запущен экземпляр SQL Server; например: http://MyServer/MyEndpoint/sql?wsdl.

Для WSDL-документов по умолчанию элементы параметра содержат сопоставления типа sqltypes:type языка WSDL с системными типами данных SQL Server. Сведения об этих сопоставлениях см. в разделе Сопоставления типов данных в собственных веб-службах с поддержкой XML.

WSDL-документ по умолчанию, сформированный конечной точкой, указывает тип параметра с помощью ссылки на один из типов, определенных в Сопоставлениях типов данных или с помощью ссылки на производные типы данных типов и последующим добавлением ограничений. Для всех строк и двоичных типов WSDL-документ по умолчанию, возвращенный конечной точкой, будет включать производный тип, содержащий XSD-аспект maxLength, для указания количества байт или символов.

Аспект maxLength не формируется для типов переменной длины, объявленных со спецификатором (max). Для типов данных decimal и numeric в документе WSDL по умолчанию будет сформирован производный тип, включающий в себя XSD-аспекты totalDigits и fractionDigits, описывающие точность и масштаб параметра.

Сопоставления типов SQL Server и среды CLR для WSDL-документа по умолчанию

Экземпляры WSDL-документов по умолчанию включают поддержку сопоставления типов данных SQL Server с типами среды CLR, которые предоставляются платформой Microsoft.NET Framework 2.0. Так как некоторые встроенные типы данных среды CLR не точно совпадают с типами данных SQL Server, платформа .NET Framework 2.0 предоставляет пространство имен System.Data.SqlTypes. Это активизирует систему управляемого типа, которая может особым образом обработать большинство аспектов типов данных SQL Server, которые не могут быть сопоставлены с XSD-типами другим способом.

Для выпуска платформы .NET Framework 2.0 инструмент для языка определения веб-служб (Wsdl.exe) имеет встроенную поддержку для формирования соответствующих сопоставлений типов SQL Server с типами среды CLR для экземпляров WSDL по умолчанию. Данная поддержка доступна при запуске программы Wsdl.exe из командной строки или при добавлении веб-ссылки к проекту Visual Studio 2005.

В экземплярах WSDL, сформированных с помощью данной поддержки сопоставления типов, все типы данных SQL Server кодируются с помощью объявления и использования указанного URI пространства имен (https://schemas.microsoft.com/sqlserver/2004/sqltypes) и его соответствующего префикса (sqltypes). В следующей таблице показано, как сопоставления **sqltype:**type в экземплярах WSDL, сформированных с помощью программы Wsdl.exe, сопоставить с соответствующими им типами среды CLR.

Элемент типа WSDL

Тип среды 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 Сопоставлен с классом упаковщика для массива объектов System.Xml.XmlNode. Для параметров нетипизированного XML класс упаковщика имеет имя xml, а для параметров типизированного XML использует сформированное имя.

2 Сопоставлен с классом упаковщика одиночного объекта System.Xml.XmlElement, использующего сформированное имя.

Как XML-данные обрабатываются в WSDL-документе по умолчанию

Если в WSDL-документе по умолчанию определены параметры типа xml, они сопоставляются с типом данных sqltypes:xml языка WSDL. Это позволяет указывать любой корректный XML-документ без какой-либо дополнительной проверки содержимого или схемы. Дополнительные сведения см. в разделе Реализация языка XML в SQL Server.

Для параметров типа xml, привязанных к пространству имен XML, WSDL-документ по умолчанию сформирует элемент <xsd:complexType>, содержащий ограничения для типа sqltypes:xml. В свою очередь типизированный XML-документ указывает в качестве правила ограничения тип xsd:any. Как показано в следующем примере, данное ограничение укажет атрибут processContents, установив его значение в strict, и атрибут namespace со значением в виде списка соответствующих пространств имен XML, связанных с коллекцией схем, к которой привязан типизированный XML.

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