24 Stimmen

XML-Ausgabe wird in SQL abgeschnitten

Ich muss mein Ergebnisset in XML zurückgeben und das funktioniert gut, aber wenn die Anzahl der Datensätze erhöht wird, wird meine XML-Ausgabe abgeschnitten. Hier ist meine Abfrage

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

Ich habe jedoch einige Optionen gesetzt, um das Ausgabeergebnis zu erhöhen, wie...

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 trotzdem erhalte ich nicht mein gewünschtes Ergebnis.

Bitte schlagen Sie mir eine Lösung vor

EDIT: Wenn ich jedoch auf das XML klicke, öffnet es sich in einem anderen Abfragefenster und alle XMLs werden hier angezeigt, aber es gibt nicht das gesamte XML zurück, sondern abgeschnittenes XML.

Danke....

0 Stimmen

Stellen Sie sicher, dass Sie den SSMS Management Studio neu starten, damit diese Änderungen wirksam werden.

1voto

Wenn Ihr XML-Ergebnissatz immer noch abgeschnitten wird, auch nachdem Sie die SSMS-Optionen geändert haben, verwenden Sie das SQLCMD-Dienstprogramm mit der Option :XML ON, bevor Sie Ihre XML-Anweisung ausführen. Leiten Sie Ihre Ausgabe mit dem -o-Schalter in eine Datei um. SQLCMD ist ein Befehlszeilen-Dienstprogramm, das sehr einfach zu verwenden ist. Siehe http://msdn.microsoft.com/en-us/library/ms162773.aspx.

0 Stimmen

Funktioniert möglicherweise nur mit MS SQL 2008 oder früher. MS SQL 2012 wird es abschneiden: connect.microsoft.com/SQLServer/feedback/details/786004/…

1voto

vikscool Punkte 1283

Ich weiß, dass diese Frage vor etwa 10 Jahren gestellt wurde, aber falls jemand nach einem Workaround sucht, der keine Änderungen auf der DB-Seite erfordert und ein wenig ähnlich zu der akzeptierten Antwort ist, jedoch nicht mit SqlDataReader.

Sie könnten eine DataTable verwenden und diese mit dem SqlDataAdapter füllen. Dabei wird Ihr XML-Daten in mehrere Zeilen aufgeteilt.

Zum Beispiel

string xmloutput = "";
var cmd = new SqlCommand("", 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();
    }

Hinweis:

  • Der obige Code setzt voraus, dass nur eine Spalte aus der DB mit XML-Daten zurückgegeben wird.

Und später nutzen Sie die Variable xmloutput.

0voto

Dinesh Punkte 1946

Die XML-Ausgabe, die Sie im Abfrage-Ausgabefenster erhalten, ist nicht wirklich dafür gedacht, gültige XML-Dokumente zu speichern. Sie können gültiges XML aus dem SQL Server erhalten, wenn Sie es als Stream mit ADO oder SQLXML-Verwaltungsklassen in .NET erfassen

Sie können jedoch die Größe der Abfrageergebnisse einschränken, indem Sie In SQL Server Management Studio gehen Sie zu Tools >> Optionen >> Abfrageergebnisse >> SQL Server >> Ergebnisse als Text >> Maximale Anzahl der Zeichen, die in jeder Spalte angezeigt werden

0voto

Emil Lerch Punkte 4336

Sie können SQL Management Studio für 2008 gegen einen SQL Server 2005-Datenbank-Motor verwenden. Wenn Sie das tun, sollten die Standardeinstellungen groß genug sein, aber in Tools -> Optionen -> Abfrageergebnisse -> SQL-Server gibt es ein Ergebnis im Raster und einen Ergebnis im Text-Knoten.

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

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

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