共用方式為


預設 WSDL

未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

當引數字串 wsdl 傳遞至正在 SQL Server 執行個體上執行的 HTTP SOAP 結束點時,會傳回預設 WSDL;例如:http://MyServer/MyEndpoint/sql?wsdl。

對於預設 WSDL 文件,參數元素包含從 WSDL sqltypes:type 對應至 SQL Server 系統資料類型的類型對應。如需有關這些對應的詳細資訊,請參閱<原生 XML Web Service 中的資料類型對應>。

藉由參考<資料類型對應>中定義的其中一個類型或是參考這些類型的子類型,然後再另外加入限制,這樣由結束點產生的預設 WSDL 文件即可指定參數類型。對於所有字串與二進位類型,由結束點傳回的預設 WSDL 將包含子類型,其中包括用於指定二進位或字串數目的 XSD maxLength Facet。

maxLength Facet,此類型是以 (max) 規範宣告的。對於 decimal 與 numeric 資料類型,預設 WSDL 將產生包含 XSD totalDigitsfractionDigits Facet 的子類型,其中將描述參數的有效位數和小數位數。

預設 WSDL 的 SQL Server 與 Common Language Runtime 類型的對應

預設 WSDL 執行個體能夠支援 SQL Server 資料類型與 Microsoft.NET Framework 2.0 中提供的 Common Language Runtime (CLR) 類型的對應。因為部份內建 CLR 資料類型不能很適當地對等於 SQL Server 資料類型,所以 System.Data.SqlTypes 命名空間於 .NET Framework 2.0 中提供。這樣使 Managed 類型系統可以專門處理 SQL Server 資料類型系統的許多 Facet,否則無法對應至 XSD 類型。

對於 .NET Framework 2.0 版本,Web Services Definition Language Tool (Wsdl.exe) 已內建功能,可以為預設 WSDL 執行個體產生 SQL Server 與 CLR 類型的適當對應。無論是在命令提示字元使用 Wsdl.exe 或將 Web 參考加入至Visual Studio 2005 專案,都能使用此方式。

使用此類型對應功能產生的 WSDL 執行個體中,所有 SQL Server 資料類型皆透過宣告或使用特定命名空間 URI (https://schemas.microsoft.com/sqlserver/2004/sqltypes) 與其對應的前置詞 (sqltypes) 進行編碼。下表顯示產生的 WSDL 執行個體中 **sqltype:**type 對應如何藉由 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 物件的包裝函式類別。

在預設 WSDL 中如何處理 XML 資料類型

當 xml 資料類型參數在預設 WSDL 中定義時,它們是對應到 sqltypes:xml WSDL 資料類型。如此一來,在沒有額外內容或結構描述驗證的情形下,仍可指定正確格式的 XML。如需詳細資訊,請參閱<在 SQL Server 中實作 XML

對於與 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>