Lorenzo Benaglia


Storie di un SQLlaro mannaro...
Archivio Posts
Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Anno 2005
Calendario
aprile 2024
lmmgvsd
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

Valorizzare una colonna con un documento XML in SQL Server 2000

Questa sera sul ng microsoft.public.it.sql due utenti hanno chiesto come è possibile in SQL Server 2000 valorizzare una colonna di una tabella con un documento XML.
La domanda non è banale dato che il supporto XML in SQL Server 2000 rende agevole la trasformazione dei dati relazionali di un database in un documento XML e vice versa, ma non prevede in alcun modo un sistema nativo per memorizzare un documento XML in una tabella.

I due utenti si sono scontrati con i limiti della clausola FOR XML descritti sui Books Online nel paragrafo:

Guidelines for Using the FOR XML Clause
http://msdn.microsoft.com/library/en-us/xmlsql/ac_openxml_0alh.asp

Mentre mi stavo scervellando per trovare una soluzione pura in T-SQL vedo che Andrea Montanari si connette al messenger, così lo invito a ragionare insieme sul problema.
Andrea rammenta di aver letto qualcosa sul libro The Guru's Guide to SQL Server Stored Procedures, XML, and HTML di Ken Henderson.
Facendo una veloce ricerca scopre che nel capitolo 15 a pagina 452 viene descritta la stored procedure sp_run_xml_proc che si basa pesantemente sulle extented stored procedure sp_OA*. 
In sostanza viene istanziata la classe SQLDMO.SQLServer e richiamando il metodo ExecuteWithResultsAndMessages2 viene eseguita una stored procedure contenente la clausola FOR XML AUTO passata come parametro di input.

La soluzione mi sembra decisamente arzigogolata ed inefficiente, come ammette lo stesso Ken ".... althought the prospect of having to open a separate connection into the server to translate the document is not particularly pretty one, it is unfortunately the only way to do this without resorting to client side processing, at least for now."

Così ho ripreso in mano il solito URL che suggerisco abitualmente quando qualcuno domanda come importare i dati di un documento XML in una tabella SQL Server e ho notato che l'utility TextCopy.exe può essere utilizzata per importare un documento XML in una colonna!
Ho svolto un piccolo test e funziona egregiamente:
http://www.perfectxml.com/articles/xml/importxmlsql.asp

Purtroppo da una verifica svolta da Andrea, questa utility non risulta essere presente in SQL Server 2000 Desktop Engine (MSDE 2000).

SQL Server 2005 permetterà di memorizzare documenti XML nativamente nel database attraverso l'introduzione del data type xml.
Se siete curiosi di sapere come, registratevi e seguite gratuitamente il corso 2939: Programming Microsoft® SQL Server™ 2005 

Categoria: SQL Server
venerdì, 17 giu 2005 Ore. 00.47
Statistiche
  • Views Home Page: 932.233
  • Views Posts: 698.140
  • Views Gallerie: 12.634.406
  • n° Posts: 300
  • n° Commenti: 314
Mappa





















Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003