2009-05-28 8 views
1

Ich bin eine XML in SQL mit OpenXML Laden, während die Variable deklarieren die max i up gehen kann 8000 Zeichen ist:Wie überwinde ich die 8000-Zeichen-Grenze von OpenXML?

DECLARE @xml_text varchar(8000) 

Da Text wird ntext- nicht mit OpenXML, was andere Alternativen verwendet werden darf tun Ich muss das gesamte XML (über 20000 Zeichen) in SQL laden?

+0

Es ist erwähnenswert, dass der Abfrage-Browser die Ausgabe von wirklich langen varchars abgeschnitten (alles über 8000 denke ich). Seien Sie nicht überrascht, wenn Sie nicht sehen, dass Ihre gesamte XML-Zeichenfolge in den Abfrageergebnissen angezeigt wird - die gesamte Zeichenfolge wird weiterhin an Ihre Anwendung gesendet. – Daniel

Antwort

4

sollten Sie in der Lage sein, varchar zu verwenden (max) (SQL 2005 und höher)

DECLARE @idoc int 
DECLARE @doc varchar(max) 
SET @doc = ' 
<myxml> 
<node nodeid="1" nodevalue="value 1"> 

</node> 

</myxml>' 
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc 
SELECT 
    * 
FROM 
    OPENXML (@idoc, '/myxml/node',1) WITH (nodeid varchar(10), nodevalue varchar(20)) 
+0

ugh, warum die Verwendung von sp_xml_prepareddocment hier? Vergiss nicht, das mit sp_xml_removedocument zu bereinigen! Die Antwort von CAbbott ist eine bessere. – ScottE

+0

Weil ich zu der Zeit (vor über einem Jahr) den XML-Datentyp in SQL nicht so gut kannte. Ja, CAbbott hat die bessere Lösung. – CodeLikeBeaker

4

Wenn Sie SQL 2005 verwenden sind oder besser können Sie den XML-Datentyp selbst verwenden. Auf diese Weise können Sie vermeiden, mit OPENXML:

+0

Dies ist die richtige Antwort. Wenn Sie XML in SQL Server 2005 ausführen und nicht den XML-Datentyp verwenden. Das ist, als ob man mit einem Hammer eine Schraube einschlägt. Sicher, es funktioniert, aber es ist nicht das richtige Werkzeug für den Job. – DBAndrew

Verwandte Themen