Standard-WSDL

Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird.

Standard-WSDL (Web Services Description Language) wird zurückgegeben, wenn die Argumentzeichenfolge wsdl an einen HTTP SOAP-Endpunkt übergeben wird, der für eine Instanz von SQL Server ausgeführt wird; Beispiel: http://MyServer/MyEndpoint/sql?wsdl.

Für Standard-WSDL-Dokumente enthalten die Parameterelemente Typzuordnungen von den sqltypes:type-Zuordnungen von WSDL zu SQL Server-Systemdatentypen. Informationen zu diesen Zuordnungen finden Sie unter Datentypzuordnungen in systemeigenen XML-Webdiensten.

Das Standard-WSDL-Dokument, das von einem Endpunkt generiert wird, gibt den Parametertyp durch einen Verweis auf einen der Typen an, die in Datentypzuordnungen definiert wurden, oder durch einen Verweis auf Untertypen dieser Typen. Anschließend werden außerdem noch Einschränkungen hinzugefügt. Für alle Zeichenfolgen- und binären Typen enthält das vom Endpunkt zurückgegebene Standard-WSDL einen Untertyp, der das maxLength-Facet von XSD für die Angabe der Anzahl von Bytes oder Zeichen umfasst.

Das maxLength-Facet wird nicht für Typen variabler Länge generiert, die mit dem (max)-Bezeichner deklariert werden. Für decimal- und numeric-Datentypen generiert das Standard-WSDL einen Untertyp, der die XSD totalDigits- und fractionDigits-Facets enthält, die die Genauigkeit und Dezimalstellen des Parameters beschreiben.

Zuordnungen von SQL Server- zu CLR-Datentypen für Standard-WSDL

Standard-WSDL-Instanzen enthalten Unterstützung für das Zuordnen von SQL Server-Datentypen zu CLR-Typen (Common Language Runtime), die in Microsoft.NET Framework 2.0 bereitgestellt werden. Da einige integrierte CLR-Datentypen SQL Server-Datentypen nicht gut zugeordnet werden können, wird der System.Data.SqlTypes-Namespace in .NET Framework 2.0 bereitgestellt. Auf diese Weise wird ein verwaltetes Typsystem ermöglicht, das insbesondere viele der Facets des SQL Server-Datentypsystems verarbeiten kann, die anderweitig nicht den XSD-Typen zugeordnet werden können.

Für die Version .NET Framework 2.0 verfügt das WSDL-Tool (Wsdl.exe) über eine integrierte Unterstützung zum Generieren der geeigneten Datentypzuordnungen zwischen SQL Server und CLR für Standard-WSDL-Instanzen. Diese Unterstützung ist unabhängig davon verfügbar, ob Sie Wsdl.exe an der Eingabeaufforderung oder durch Hinzufügen eines Webverweises zu einem Visual Studio 2005-Projekt verwenden.

In den WSDL-Instanzen, die mithilfe dieser Typzuordnungsunterstützung generiert werden, werden alle SQL Server-Datentypen durch Deklarieren und Verwenden eines bestimmten Namespace-URIs (https://schemas.microsoft.com/sqlserver/2004/sqltypes) und des entsprechenden Präfixes (sqltypes) codiert. Die folgende Tabelle zeigt, wie **sqltype:**type-Zuordnungen in WSDL-Instanzen, die über das Tool Wsdl.exe generiert wurden, den entsprechenden CLR-Typen zugeordnet werden.

WSDL-Typelement

CLR-Datentyp

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 Wird einem Klassenwrapper für ein Array von System.Xml.XmlNode-Objekten zugeordnet. Die Wrapperklasse trägt für nicht typisierte XML-Parameter den Namen xml, verwendet jedoch einen generierten Namen für typisierte XML-Parameter.

2 Wird einer Wrapperklasse um ein einzelnes System.Xml.XmlElement-Objekt zugeordnet, das einen generierten Namen verwendet.

Verarbeitung des xml-Datentyps in Standard-WSDL

Wenn xml-Datentypparameter in Standard-WSDL definiert werden, werden sie dem sqltypes:xml-WSDL-Datentyp zugeordnet. Auf diese Weise kann beliebiges wohl geformtes XML angegeben werden, ohne dass eine zusätzliche Inhalts- oder schemabasierte Überprüfung erforderlich ist. Weitere Informationen finden Sie unter Implementieren von XML in SQL Server.

Für xml-Datentypparameter, die an einen XML-Namespace gebunden sind, generiert das Standard-WSDL-Dokument ein <xsd:complexType>-Element, das Einschränkungen für den sqltypes:xml-Datentyp enthält. Das typisierte XML gibt seinerseits den xsd:any-Typ als Einschränkungsregel an. Wie im folgenden Beispiel gezeigt, gibt diese Einschränkung ihrerseits das processContents-Attribut an, wodurch der Wert auf strict festgelegt wird. Außerdem wird das namespace-Attribut angegeben und sein Wert auf eine Liste der entsprechenden XML-Namespaces festgelegt, die der Schemaauflistung zugeordnet sind, an die das typisierte XML gebunden ist.

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