Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Em um esquema, você pode identificar uma coluna como uma coluna de estouro para receber todos os dados não armazenados do documento XML. Esta coluna é especificada no esquema usando a sql:overflow-field anotação. É possível ter várias colunas de estouro.
Sempre que um nó XML (elemento ou atributo) para o qual há uma sql:overflow-field anotação definida entra no escopo, a coluna de estouro é ativada e recebe dados não armazenados. Quando o nó sai do escopo, a coluna de estouro não está mais ativa e o XML Bulk Load torna o campo de estouro anterior (se houver) ativo.
Como armazena dados na coluna de estouro, o Carregamento em Massa XML também armazena as marcas de abertura e fechamento do elemento pai para o qual sql:overflow-field é definido.
Por exemplo, o esquema a seguir descreve os <elementos Customers> e <CustOrder> . Cada um desses elementos identifica uma coluna de estouro:
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
<xsd:appinfo>
<sql:relationship name="CustCustOrder"
parent="Cust"
parent-key="CustomerID"
child="CustOrder"
child-key="CustomerID" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="ROOT" sql:is-constant="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Customers"
sql:relation="Cust"
sql:overflow-field="OverflowColumn">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CustomerID" type="xsd:integer"/>
<xsd:element name="CompanyName" type="xsd:string"/>
<xsd:element name="City" type="xsd:string"/>
<xsd:element name="Order"
sql:relation="CustOrder"
sql:relationship="CustCustOrder"
sql:overflow-field="OverflowColumn">
<xsd:complexType>
<xsd:attribute name="OrderID"/>
<xsd:attribute name="CustomerID"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
No esquema, o <elemento Customer> é mapeado para a tabela Cust e o <elemento Order> é mapeado para a tabela CustOrder.
<Os elementos Cliente> e <Pedido> identificam uma coluna de estouro. Assim, a carga em massa XML salva todos os elementos e atributos filho não associados do <elemento Customer> na coluna de estouro da tabela Cust e todos os elementos e atributos filho não associados do <elemento Order> na coluna de estouro da tabela CustOrder.
Para testar um exemplo de trabalho
Salve o esquema fornecido neste exemplo como SampleSchema.xml.
Crie estas tabelas:
CREATE TABLE Cust ( CustomerID int PRIMARY KEY, CompanyName varchar(20) NOT NULL, City varchar(20) DEFAULT 'Seattle', OverflowColumn nvarchar(200)) GO CREATE TABLE CustOrder ( OrderID int PRIMARY KEY, CustomerID int FOREIGN KEY REFERENCES Cust(CustomerID), OverflowColumn nvarchar(200)) GOSalve os seguintes dados XML de exemplo como SampleXMLData.xml:
<ROOT> <Customers> <CustomerID>1111</CustomerID> <CompanyName>Hanari Carnes</CompanyName> <City><![CDATA[NY]]> </City> <Junk>garbage in overflow</Junk> <Order OrderID="1" /> <Order OrderID="2" /> </Customers> <Customers> <CustomerID>1112</CustomerID> <CompanyName>Toms Spezialitten</CompanyName> <City><![CDATA[LA]]> </City> <xyz><address>111 Maple, Seattle</address></xyz> <Order OrderID="3" /> </Customers> <Customers> <CustomerID>1113</CustomerID> <CompanyName>Victuailles en stock</CompanyName> <Order OrderID="4" /> </Customers> </ROOT>Para executar o Carregamento em Massa XML, salve e execute este exemplo do Microsoft Visual Basic Scripting Edition (VBScript) como Sample.vbs:
set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkload.4.0") objBL.ConnectionString = "provider=SQLOLEDB;data source=localhost;database=tempdb;integrated security=SSPI" objBL.ErrorLogFile = "c:\error.log" objBL.CheckConstraints = True objBL.Execute "c:\SampleSchema.xml", "c:\SampleXMLData.xml" set objBL=Nothing