Udostępnij przez


Pobieranie niewykorzystana danych przy użyciu sql:overflow-pole (SQLXML 4.0)

Gdy rekordy są wstawiane w bazie danych z dokumentem XML za pomocą Transact-SQL OPENXML funkcji niewykorzystana dane z źródło dokument XML może być przechowywana kolumna.Aby pobrać dane z bazy danych, używając schematów adnotacjami, można określić sql:overflow-field atrybut zidentyfikować kolumna w tabela, w którym są przechowywane dane przepełnienie.sql:overflow-field Można określić atrybut na <elementu>.

Te dane są następnie pobierane w następujący sposób:

  • Atrybuty przechowywane kolumna przepełnienia są dodawane do elementu, który zawiera sql:overflow-field adnotacji.

  • Elementy podrzędność i ich potomkami przechowywane kolumna przepełnienie w bazie danych są dodawane jako elementy podrzędność po zawartości, która jest wyraźnie określona w schemacie.(Nie zamówienia jest zachowane.)

Przykłady

Aby utworzyć próbki pracy przy użyciu poniższych przykładach, musi spełniać określone wymagania.Aby uzyskać więcej informacji, zobacz Wymagania dotyczące uruchamianie przykładów SQLXML.

A.Określanie sql:overflow-dla elementu pole

W tym przykładzie założono, że poniższy skrypt został uruchomiony, tak, aby w bazie danych tempdb istnieje tabela o nazwie Customers2:

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

Ponadto, należy utworzyć katalog wirtualny w bazie danych tempdb — i wirtualną nazwę szablonu z template Typ o nazwie "szablon".

W poniższym przykładzie schematu mapowanie pobiera niewykorzystana dane przechowywane kolumna AddressOverflow w tabela Customers2:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">

  <xsd:element name="Customers2" sql:overflow-field="AddressOverflow" >
    <xsd:complexType>
      <xsd:attribute name="CustomerID"  type="xsd:integer"/>
      <xsd:attribute name="ContactName"  type="xsd:string" />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

Aby przetestować przykładowe kwerendy XPath względem schematu

  1. Kod schematu skopiować i wkleić go do pliku tekstowego.Zapisz plik jako Overflow.xml.

  2. Skopiuj następujący szablon i wkleić go do pliku tekstowego.Zapisz plik jako OverflowT.xml w tym samym katalogu, w którym zapisano Overflow.xml.Kwerendy w szablonie wybiera rekordy w tabela Customers2.

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

    Ścieżka katalogu określonego dla mapowania schematu (Overflow.xml) jest katalog, w którym zapisany szablon.Ścieżka bezwzględna również można określić, na przykład:

    mapping-schema="C:\SqlXmlTest\Overflow.xml"
    
  3. Tworzenie i używanie szablon wykonać skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.

Zestaw wyników jest następujący:

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