it-swarm.com.de

Wie kann man ALLEN Text von einem ntext oder nvarchar (max) in SSMS anzeigen?

Wie kann ALLER Text von einem NTEXT oder NVARCHAR (max) in SQL Server Management Studio angezeigt werden? Standardmäßig scheint es nur die ersten paar hundert Zeichen (255?) Zurückzugeben, aber manchmal möchte ich nur eine schnelle Möglichkeit, das gesamte Feld anzuzeigen, ohne ein Programm dafür schreiben zu müssen. Sogar SSMS 2012 hat immer noch dieses Problem :(

160
NickG

Optionen (Abfrageergebnisse/SQL Server/Ergebnisse zur Rasterseite)

Um die Optionen für die aktuellen Abfragen zu ändern, klicken Sie im Menü Abfrage auf Abfrageoptionen, oder klicken Sie mit der rechten Maustaste in das Fenster SQL Server-Abfrage, und wählen Sie Abfrageoptionen aus.

...

Maximal abgerufene Zeichen
Geben Sie eine Zahl zwischen 1 und 65535 ein, um die maximale Anzahl von Zeichen festzulegen, die in jeder Zelle angezeigt werden.

Das Maximum liegt, wie Sie sehen, bei 64.000. Die Standardeinstellung ist viel kleiner.

BTW Ergebnisse zu Text hat eine noch drastischere Einschränkung:

Maximale Anzahl der in jeder Spalte angezeigten Zeichen
Der Standardwert ist 256. Erhöhen Sie diesen Wert, um größere Ergebnismengen ohne Kürzung anzuzeigen. Der Maximalwert beträgt 8.192.

78
Remus Rusanu

Ich konnte den Volltext (99.208 Zeichen) aus einer NVARCHAR (MAX) -Spalte abrufen, indem ich (Results To Grid) nur diese Spalte auswählte und dann mit der rechten Maustaste darauf klickte und das Ergebnis als CSV-Datei speicherte. Lustigerweise wurde die Ausgabe bei dem Versuch, dieselbe Abfrage auszuführen, bei aktivierter Option "Ergebnisse in Datei" unter Verwendung des Grenzwerts "Ergebnisse in Text" abgeschnitten.

Die Problemumgehung, die @MartinSmith als Kommentar zu der (derzeit) akzeptierten Antwort beschrieben hat, hat bei mir nicht funktioniert (Fehler beim Versuch, das vollständige XML-Ergebnis anzuzeigen, das sich über "Das Zeichen '[', hexadezimaler Wert 0x5B, kann nicht beschwert in einem Namen enthalten sein ").

186
Eric

Schneller Trick

SELECT CAST('<A><![CDATA[' + CAST(LogInfo as nvarchar(max)) + ']]></A>' AS xml)
FROM Logs
WHERE IDLog = 904862629
114
André Kops

Ich habe ein Add-In für SSMS geschrieben und dieses Problem ist dort behoben. Sie haben zwei Möglichkeiten:

mit "Aktuelle Zelle 1: 1 kopieren" können Sie die ursprünglichen Zellendaten in die Zwischenablage kopieren:

http://www.ssmsboost.com/Features/ssms-add-in-copy-results-grid-cell-contents-line-with-breaksCopy original cell contents

Alternativ können Sie Zellinhalte in einem externen Texteditor (Editor ++ oder Editor) mit der Funktion "Zellvisualisierer" öffnen: http://www.ssmsboost.com/Features/ssms-add-in-results-grid) -visualizers

(Diese Funktion ermöglicht das Öffnen von Feldinhalten in jeder externen Anwendung. Wenn Sie also wissen, dass es sich um Text handelt, verwenden Sie den Texteditor zum Öffnen. Wenn es sich bei den Inhalten um Binärdaten mit Bild handelt, wählen Sie die Ansicht als Bild. Das folgende Beispiel zeigt das Öffnen eines Bildes ):SSMS Results grid visualizers

52

Daten als XML zurückgeben

SELECT CONVERT(XML, [Data]) AS [Value]
FROM [dbo].[FormData]
WHERE [UID] LIKE '{my-uid}'

Stellen Sie sicher, dass Sie im SSMS-Optionsfenster ein angemessenes Limit festlegen, das vom erwarteten Ergebnis abhängt. enter image description here

Dies funktioniert, wenn der zurückgegebene Text keine nicht codierten Zeichen wie & Anstelle von &amp; Enthält, wodurch die XML-Konvertierung fehlschlägt.

Daten mit PowerShell zurückgeben

Dazu muss PowerShell SQL Server-Modul auf dem Computer installiert sein, auf dem Sie den Befehl ausführen.

Wenn Sie alle eingerichtet sind, konfigurieren Sie das folgende Skript und führen Sie es aus:

Invoke-Sqlcmd -Query "SELECT [Data] FROM [dbo].[FormData] WHERE [UID] LIKE '{my-uid}'" -ServerInstance "database-server-name" -Database "database-name" -Username "user" -Password "password" -MaxCharLength 10000000 | Out-File -filePath "C:\db_data.txt"

Stellen Sie sicher, dass Sie den Parameter -MaxCharLength Auf einen Wert setzen, der Ihren Anforderungen entspricht.

1
dvlsc

Der einfachste Weg, große Varchar-/Textspalten schnell anzuzeigen:

declare @t varchar(max)

select @t = long_column from table

print @t
0