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>
См. также