Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Num esquema, pode identificar uma coluna como uma coluna de overflow para receber todos os dados não consumidos do documento XML. Esta coluna é especificada no esquema usando a anotação sql:overflow-field . É possível ter múltiplas colunas de overflow.
Sempre que um nó XML (elemento ou atributo) para o qual existe uma anotação sql:overflow-field definida entra no âmbito, a coluna de overflow é ativada e recebe dados não consumidos. Quando o nó sai do âmbito, a coluna de overflow deixa de estar ativa e o XML Bulk Load torna o campo de overflow anterior (se existir) ativo.
Como armazena dados na coluna de overflow, o XML Bulk Load também armazena as etiquetas de abertura e fecho do elemento pai para o qual o campo sql:overflow está definido.
Por exemplo, o esquema seguinte descreve os <elementos Clientes> e <CustOrder> . Cada um destes elementos identifica uma coluna de overflow:
<?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 Cliente> corresponde à tabela Cust e o <elemento Ordem> corresponde à tabela CustOrder.
Tanto os elementos de Cliente> como<<de Encomenda> identificam uma coluna de excesso. Assim, o XML Bulk Load guarda todos os elementos filhos e atributos não consumidos do <elemento Cliente> na coluna de overflow da tabela Cust, bem como todos os elementos filhos não consumidos e atributos do <elemento Order> na coluna de overflow da tabela CustOrder.
Para testar uma amostra funcional
Guarde 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)) GOGuarde 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 XML Bulk Load, guarde 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