Udostępnij przez


Pobieranie, ta data using the sql:overflow-pole (SQLXML 4.0)

Gdy rekordy są wstawiane w bazie danych z dokumentem XML przy użyciu Transact-SQL Funkcja OPENXML wszystkie nieużywanej danych ze urządzenie źródłowe dokumentu XML mogą być przechowywane kolumna. Kiedy pobierasz dane z bazy danych za pomocą schematów adnotacjami, można określić sql:overflow-field atrybut do identyfikacji kolumna w tabela, w którym przechowywany jest przepełnienie danych. The sql:overflow-field atrybut can be specified on <element>.

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

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

  • 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 jawnie określona w schemacie.(Kolejność nie jest zachowywany.)

Przykłady

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

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

W tym przykładzie założono, że tak, że istnieje tabela o nazwie Customers2 w bazie danych tempdb był uruchomiony następujący skrypt:

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 wirtualnych nazwę szablonu z templateTyp o nazwie "szablonu".

W poniższym przykładzie schematu mapowania pobiera nieużywanej dane, które są przechowywane kolumna AddressOverflow 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ć kwerendę XPath próbki względem schematu

  1. Skopiować powyższy kod schematu 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 te 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>
    

    To ścieżka do katalogu określonego dla mapowania schematu (Overflow.xml) jest względna w stosunku do katalogu, w którym są zapisywane w szablonie.Ścieżka bezwzględna również można określić, na przykład:

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

    Aby uzyskać więcej informacji zobaczPrzy użyciu obiektu ADO do wykonywania SQLXML bada 4.0.

Poniżej znajduje się zestaw wyników:

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