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
Quando os registos são inseridos numa base de dados a partir de um documento XML usando a função Transact-SQL OPENXML, todos os dados não consumidos do documento XML de origem podem ser armazenados numa coluna. Quando recupera dados de uma base de dados usando esquemas anotados, pode especificar o atributo sql:overflow-field para identificar a coluna na tabela onde os dados de overflow estão armazenados. O atributo sql:overflow-field pode ser especificado no <elemento>.
Estes dados são depois recuperados da seguinte forma:
Os atributos armazenados na coluna de overflow são adicionados ao elemento que contém a anotação sql:overflow-field .
Os elementos filhos e os seus descendentes, armazenados na coluna de overflow na base de dados, são adicionados como elementos filhos após o conteúdo explicitamente especificado no esquema. (Nenhuma ordem é preservada.)
Examples
Para criar exemplos funcionais usando os seguintes exemplos, deve cumprir certos requisitos. Para mais informações, consulte Requisitos para Executar Exemplos de SQLXML.
A. Especificação do campo sql:overflow para um elemento
Este exemplo assume que o seguinte script foi executado para que exista uma tabela chamada Customers2 na base de dados 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
Além disso, deve criar um diretório virtual para a base de dados tempdb — e um nome virtual modelo do tipo modelo chamado "template".
No exemplo seguinte, o esquema de mapeamento recupera os dados não consumidos que estão armazenados na coluna AddressOverflow da 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>
Para testar uma consulta XPath de exemplo contra o esquema
Copie o código do esquema acima e cole num ficheiro de texto. Guarde o ficheiro como Overflow.xml.
Copie o modelo seguinte e cole-o num ficheiro de texto. Guarda o ficheiro como OverflowT.xml no mesmo diretório onde guardaste Overflow.xml. A consulta no modelo seleciona os registos na tabela Customers2.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="Overflow.xml"> /Customers2 </sql:xpath-query> </ROOT>O caminho do diretório especificado para o esquema de mapeamento (Overflow.xml) é relativo ao diretório onde o modelo é guardado. Um caminho absoluto também pode ser especificado, por exemplo:
mapping-schema="C:\SqlXmlTest\Overflow.xml"Crie e use o Script de Teste SQLXML 4.0 (Sqlxml4test.vbs) para executar o modelo.
Para obter mais informações, consulte Usando o ADO para executar consultas SQLXML 4.0.
Aqui está o conjunto de resultados:
<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>