24 Stimmen

XML-Ausgabe wird in SQL abgeschnitten

Ich muss meine Ergebnismenge in XML zurückgeben und dies funktioniert gut, aber wenn die Anzahl der Datensätze erhöht werden, ist meine XML-Ausgabe truncated Hier ist meine Anfrage

select t.id,t.name,t.address from test FOR XML AUTO, ROOT('Response'), ELEMENTS

Ich habe jedoch einige Optionen eingestellt, um die Ausgabeergebnismenge zu erhöhen.

Tools --> Options --> Query Results --> SQL Server --> Results to Text --> Maximum              
number of characters displayed in each column
Tools --> Options --> Results --> Maximum characters per column

aber ich bin immer noch nicht in der Lage, das gewünschte Ergebnis zu erzielen.

Bitte schlagen Sie mir eine Lösung vor

EDIT: Wenn ich jedoch auf die XML-Datei klicke, wird sie in einem anderen Abfragefenster geöffnet und alle XML-Dateien werden hier angezeigt, aber es werden nicht alle XML-Dateien zurückgegeben, sondern abgeschnittene XML-Dateien.

Danke....

1voto

Wenn Ihre XML-Ergebnismenge auch nach Änderung der SSMS-Optionen immer noch abgeschnitten wird, verwenden Sie das Dienstprogramm SQLCMD mit der Option :XML ON, bevor Sie Ihre XML-Anweisung ausführen. Leiten Sie Ihre Ausgabe mit dem Schalter -o in eine Datei. SQLCMD ist ein Befehlszeilendienstprogramm, das sehr einfach zu benutzen ist. Siehe http://msdn.microsoft.com/en-us/library/ms162773.aspx .

1voto

vikscool Punkte 1283

Ich weiß, dass diese Frage wie folgt gestellt wurde 10 Jahre vor, aber wenn jemand nach einem Workaround sucht, der keine Änderungen an der DB-Seite erfordert und der der akzeptierten Antwort ähnlich ist, aber nicht mit SqlDataReader .

Sie könnten eine DataTable und füllen ihn mit der SqlDataAdapter . Wo Ihr XML Die Daten werden in mehrere Zeilen aufgeteilt.

Zum Beispiel

string xmloutput = "";
var cmd = new SqlCommand("<some sql query that returns data in xml format>", con);
var da = new SqlDataAdapter(cmd);
var dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
    foreach (DataRow dr in dt.Rows)
    {
        xmloutput  += dr[0].ToString();
    }

Nota:

  • der obige Code geht davon aus, dass nur eine Spalte von DB con XML Daten enthalten.

Und verwenden Sie später die Variable xmloutput .

0voto

Dinesh Punkte 1946

Die XML-Ausgabe, die Sie im Abfrageausgabefenster erhalten, ist nicht wirklich zum Speichern gedacht gültige XML-Dokumente. Sie können gültiges XML aus dem SQL Server erhalten, wenn Sie mit ADO oder SQLXML verwalteten Klassen in .NET als Stream erfassen

Sie können jedoch die Größe der Abfrageausgabe begrenzen, indem Sie In SQL Server Management Studio gehen Sie zu Extras >> Optionen >> Abfrageergebnisse >> SQL Server >> Ergebnisse in Text >> Maximale Anzahl von Zeichen, die in jeder Spalte angezeigt werden

0voto

Emil Lerch Punkte 4336

Sie können SQL Management Studio für 2008 mit einer SQL Server 2005-Datenbank-Engine verwenden. Wenn Sie das tun, sollten die Standardeinstellungen groß genug sein, aber unter Extras -> Optionen -> Abfrageergebnisse -> SQL Server gibt es einen Knoten Ergebnisse in Gitter und Ergebnisse in Text.

Results to Grid ermöglicht es Ihnen, die maximale Größe für XML-Daten explizit zu steuern, wobei die Standardgröße 2 MB beträgt.

Wenn Sie keine Lizenz für SSMS 2008 haben, sollten Sie die Express-Edition kostenlos nutzen können. ici .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X