Confira a série de três partes sobre SQL XML em 15 segundos:http://www.15seconds. com/Issue/050803.htm .
Eu pessoalmente usaria as funções SQL XQuery para fragmentar seu XML em pedaços e armazená-los no SQL Server.
Se você tiver algo como:
<data>
<person>
<name>Jones</name>
<firstname>Peter</firstname>
</person>
<person>
<name>Smith</name>
<firstname>Frank</firstname>
</person>
<data>
você pode escrever algo como:
SELECT
Data.Person.value('(name)[1]', 'varchar(20)') as 'Name',
Data.Person.value('(firstname)[1]', 'varchar(20)') as 'First Name'
FROM
@XmlVar.nodes('/data/person') As Data(Person)
Então, basicamente, o
.nodes
função fragmenta seu XML em uma "pseudo-tabela" Data.Person
- cada <person>
entrada torna-se uma linha na tabela. Com o
.value()
função, você pode extrair valores únicos desses nós XML fragmentados. Agora você tem vários campos varchar(20), que podem ser, por exemplo, inserido em uma tabela. Este método funciona bem se o seu XML for bastante pequeno (algumas centenas de entradas). Se você tiver arquivos XML enormes, talvez queira investigar outros métodos, como Carregamento XML em massa .