既定の WSDL

この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。

引数文字列 wsdl が SQL Server インスタンス上で実行されている HTTP SOAP エンドポイント (たとえば、http://MyServer/MyEndpoint/sql?wsdl) に渡されたときに、既定の WSDL が返されます。

既定の WSDL ドキュメントでは、パラメータ要素に、WSDL sqltypes:type マッピングから SQL Server システム データ型への型マッピングが保持されます。これらのマッピングの詳細については、「ネイティブ XML Web サービスでのデータ型マッピング」を参照してください。

エンドポイントにより生成された既定の WSDL ドキュメントは、データ型マッピングに定義されている型の 1 つを参照するか、これらの型のサブタイプを参照し、さらに制限を追加することでパラメータの型を指定します。すべての文字列型とバイナリ型の場合は、エンドポイントにより返された既定の WSDL に、バイト数または文字数を指定するための XSD maxLength ファセットを含むサブタイプが含まれます。

maxLength ファセットは、(max) 指定子によって宣言された可変長型には生成されません。decimal データ型と numeric データ型の場合は、既定の WSDL は、パラメータの有効桁数と小数点以下桁数を記述する XSD totalDigits ファセットと fractionDigits ファセットを含むサブタイプを生成します。

既定の WSDL での SQL Server から共通言語ランタイムへの型マッピング

既定の WSDL インスタンスでは、SQL Server データ型から Microsoft .NET Framework 2.0 が提供する CLR (共通言語ランタイム) 型へのマッピングがサポートされます。組み込みの CLR データ型の中には、SQL Server データ型と適切に対応できない型もあるので、.NET Framework 2.0 には System.Data.SqlTypes 名前空間が用意されています。これにより、XSD 型内ではマップできない SQL Server データ型システムのファセットの多くを特別に処理するマネージ型システムを実現できます。

.NET Framework 2.0 リリースでは、Web サービス記述言語ツール (Wsdl.exe) に、既定の WSDL インスタンス用に SQL Server から CLR への適切な型マッピングを生成するためのサポートが組み込まれています。コマンド プロンプトで Wsdl.exe を使用するか、Visual Studio 2005 プロジェクトに Web 参照を追加することで、このサポートを使用できます。

この型マッピング サポートを使用して生成される WSDL インスタンスでは、特定の名前空間 URI (https://schemas.microsoft.com/sqlserver/2004/sqltypes) とそれに対応するプレフィックス (sqltypes) を宣言および使用することによって、すべての SQL Server データ型がエンコードされます。次の表に、Wsdl.exe ツールを使用して対応する CLR 型にマップすると生成される、WSDL インスタンスの **sqltype:**type マッピングを示します。

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

System.Xml.XmlNode オブジェクトの配列用クラス ラッパーにマップされます。このラッパー クラスは型指定されていない XML パラメータ用の名前付き xml ですが、型指定された XML パラメータ用に生成された名前を使用します。

2 生成された名前を使用する単一の System.Xml.XmlElement オブジェクトをラップするクラス ラッパーにマップされます。

既定の WSDL での xml データ型の処理方法

xml データ型パラメータが既定の WSDL 内で定義されると、sqltypes:xml WSDL データ型にマップされます。これにより、追加のコンテンツまたはスキーマベースの検証を行わずに、整形式の XML の指定を可能にしています。詳細については、「SQL Server での XML の実装」を参照してください。

XML 名前空間にバインドされた xml データ型パラメータの場合、既定の WSDL ドキュメントは sqltypes:xml 型に対する制限を含む <xsd:complexType> 要素を生成します。その後、型指定された XML により xsd:any 型が制限規則として指定されます。次の例のように、この制限により、strict を値に設定した processContents 属性が指定されます。また、この制限により 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>