2009-04-01 25 views
8

C'è un percorso diretto che è abbastanza semplice? (cioè SQL Server può leggere XML)Qual è il modo migliore per salvare i dati XML su SQL Server?

Oppure, è meglio analizzare l'XML e trasferirlo nel solito modo tramite ADO.Net come singole righe o magari un aggiornamento di gruppo?

Mi rendo conto che potrebbero esserci soluzioni che coinvolgono processi di memorizzazione complessi di grandi dimensioni - mentre io non sono del tutto contrario a questo, io tendo a preferire avere la maggior parte della mia logica aziendale nel codice C#. Ho visto una soluzione utilizzando SQLXMLBulkLoad, ma sembrava richiedere un codice SQL abbastanza complesso.

Per riferimento, lavorerò con circa 100 righe alla volta con circa 50 piccole porzioni di dati per ciascuna (stringhe e int). Questo alla fine diventerà un lavoro batch giornaliero.

Qualsiasi snippet di codice che è possibile fornire sarebbe molto apprezzato.

+0

quale versione di SQL Server? –

+0

Sono principalmente su SQL Server 2005 sebbene abbia accesso al 2008. – alchemical

risposta

10

SQL Server 2005 e versioni successive hanno un tipo di dati denominato "XML" che è possibile archiviare XML in - non tipizzato o digitato con uno schema XSD.

È possibile riempire fondamentalmente colonne di tipo XML da una stringa letterale XML, quindi è possibile utilizzare semplicemente una normale istruzione INSERT e riempire il contenuto XML in quel campo.

Marc

+0

Una volta usato questo per ottenere il cml nel server sql, SQL Server in qualche modo analizzerà l'XML nei campi? O devo farlo manualmente in un proc o in una tabella? – alchemical

+0

No, è memorizzato come un campo XML - puoi interrogarlo usando XPath e XQuery. Cosa stai cercando esattamente? –

4

È possibile utilizzare la funzione OPENXML e la stored procedure sp_xml_preparedocument per convertire facilmente il file XML in set di righe.

+0

non utilizzare mai sp_xml_preparedocument da SQL Server 2005 !! – gbn

+0

perché no? C'è una sostituzione? – alchemical

2

Se si utilizza SQL Server 2008 (o 2005), ha un tipo di dati nativo xml. È possibile associare uno schema XSD alle variabili xml e inserire direttamente nelle colonne di tipo xml.

2

Sì, SQL Server 2005 e versioni successive possono analizzare l'XML fuori dalla scatola.

si utilizzano i nodi, valore e di query metodi di scomposizione come si vuole, se i valori o attributi

Alcuni tamponamento spudorato:

0

I dati Xml e il documento Xml potrebbero avere un significato diverso. Quando il tipo xml è valido per i dati, non salva la formattazione (gli spazi bianchi rimossi), quindi in alcuni casi (ad esempio i file di cofigurazione) l'opzione migliore è nvarchar.

Problemi correlati