共用方式為


使用 sql:overflow-field 擷取未耗用的資料 (XDR 結構描述)

重要事項重要事項

這個主題是舊版應用程式的參考。這項功能未來將不會繼續開發。請避免在新的開發工作中使用此功能。而改用註解式 XSD 結構描述建立 XML 檢視。如需詳細資訊,請參閱<註解式 XSD 結構描述簡介 (SQLXML 4.0)>。您可以將現有的註解式 XDR 結構描述轉換為 XSD 結構描述。如需詳細資訊,請參閱<將註解式 XDR 結構描述轉換為等效 XSD 結構描述 (SQLXML 4.0)>。

當記錄使用 OPENXML,從 XML 文件插入資料庫時,可以將來源 XML 文件中所有未耗用的資料儲存在資料行中。當您使用註解式結構描述擷取資料庫中的資料時,您可以指定 sql:overflow-field 屬性來識別儲存溢位資料之資料表中的資料行。

然後以下列方式擷取此資料:

  • 儲存在溢位資料行中的屬性會加入到包含 sql:overflow-field 註解的元素中。

  • 儲存在資料庫之溢位資料行中的子元素及其下階會當做在結構描述中明確指定之內容之後的子元素加入 (不保留任何順序)。

範例

若要使用下列範例建立工作範例,您必須符合某些需求。如需詳細資訊,請參閱<執行 SQLXML 範例的需求>。

A. 在 XDR 結構描述中指定 <ElementType> 的 sql:overflow-field

此範例假設這個資料表已存在 tempdb 資料庫中:

USE tempdb
CREATE TABLE Customers2 (
CustomerID       VARCHAR(10), 
ContactName    VARCHAR(30), 
AddressOverflow    NVARCHAR(500))

GO
INSERT INTO Customers2 VALUES (
'ALFKI', 
'Joe',
'<Address>
  <Address1>Maple St.</Address1>
  <Address2>Apt. E105</Address2>
  <City>Seattle</City>
  <State>WA</State>
  <Zip>98147</Zip>
 </Address>')
GO

在此範例中,對應結構描述會擷取儲存在 Customers2 資料表之 AddressOverflow 資料行中的未耗用資料。sql:overflow-field 屬性是在 <ElementType> 上指定的。

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <ElementType name="Customers2" sql:overflow-field="AddressOverflow" >
    <AttributeType name="CustomerID" />
    <AttributeType name="ContactName" />

    <attribute type="CustomerID" />
    <attribute type="ContactName"/>
  </ElementType>
</Schema>

針對結構描述測試範例 XPath 查詢

  1. 複製上述的結構描述程式碼,並將其貼到文字檔中。將檔案儲存為 OverflowXdr.xml。

  2. 複製下列範本,並將其貼到文字檔中。將檔案儲存為 OverflowXdrT.xml 並放在與儲存 OverflowXdr.xml 相同的目錄中。

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="OverflowXdr.xml">
        Customers2
      </sql:xpath-query>
    </ROOT>
    

    針對對應結構描述 (OverflowXdr.xml) 指定的目錄路徑相對於儲存範本的目錄。您也可以指定絕對路徑,例如:

    mapping-schema="C:\MyDir\OverflowXdr.xml"
    
  3. 建立和使用 SQLXML 4.0 測試指令碼 (Sqlxml4test.vbs) 以執行範本。

    如需詳細資訊,請參閱<使用 ADO 執行 SQLXML 4.0 查詢>。

以下為結果集:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Customers2 CustomerID="ALFKI" ContactName="Joe">
    <Address1>Maple St.</Address1> 
    <Address2>Apt. E105</Address2> 
    <City>Seattle</City> 
    <State>WA</State> 
    <Zip>98147</Zip> 
  </Customers2>
</ROOT>