web-dev-qa-db-fra.com

Comment visualisez-vous TOUT le texte d'un ntext ou nvarchar (max) dans SSMS?

Comment visualiser tout le texte d'un NTEXT ou de NVARCHAR (max) dans SQL Server Management Studio? Par défaut, il ne semble que renvoyer les quelques centaines de premiers caractères (255?), Mais parfois, je veux juste un moyen rapide d’afficher tout le champ, sans avoir à écrire un programme pour le faire. Même SSMS 2012 a toujours ce problème :(

160
NickG

Options (Résultats de la requête/SQL Server/Résultats de la page de la grille)

Pour modifier les options des requêtes en cours, cliquez sur Options de la requête dans le menu Requête ou cliquez avec le bouton droit de la souris dans la fenêtre Requête SQL Server et sélectionnez Options de la requête.

...

Nombre maximal de caractères récupérés
Entrez un nombre compris entre 1 et 65535 pour spécifier le nombre maximal de caractères à afficher dans chaque cellule.

Comme vous le voyez, le maximum est de 64k. Le défaut est beaucoup plus petit.

BTW Résultats en texte a une limitation encore plus radicale:

Nombre maximum de caractères affichés dans chaque colonne
Cette valeur par défaut est 256. Augmentez cette valeur pour afficher des ensembles de résultats plus grands sans troncature. La valeur maximale est 8 192.

78
Remus Rusanu

J'ai pu extraire le texte intégral (99 208 caractères) d'une colonne NVARCHAR (MAX) en sélectionnant (Résultats dans la grille) uniquement cette colonne, en cliquant dessus, puis en enregistrant le résultat au format CSV. Assez drôle, lorsque j'ai essayé d'exécuter la même requête, mais que l'option Résultats au fichier était activée, la sortie était tronquée à l'aide de la limite Résultats en texte.

La solution de contournement décrite par @MartinSmith comme un commentaire sur la réponse acceptée (actuellement) ne fonctionnait pas pour moi (une erreur s'est produite lors de la tentative d'affichage du résultat XML complet en se plaignant du caractère ",", la valeur hexadécimale 0x5B, ne peut pas être inclus dans un nom ").

186
Eric

Truc rapide

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

J'ai écrit un complément pour SSMS et ce problème est résolu ici. Vous pouvez utiliser l'une des deux manières suivantes:

vous pouvez utiliser "Copier la cellule actuelle 1: 1" pour copier les données de cellule d'origine dans le Presse-papiers:

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

Vous pouvez également ouvrir le contenu des cellules dans un éditeur de texte externe (bloc-notes ++ ou bloc-notes) à l'aide de la fonction "Visualiseurs de cellules": http://www.ssmsboost.com/Features/ssms-add-in-results-grid -visualiseurs

(Cette fonction permet d’ouvrir le contenu d’un champ dans n’importe quelle application externe. Si vous savez que c’est du texte, utilisez un éditeur de texte pour l’ouvrir. Si le contenu est constitué de données binaires avec une image, sélectionnez Afficher comme image. Exemple ci-dessous montre l’ouverture d’une image. ):SSMS Results grid visualizers

52
Andrei Rantsevich

Renvoyer les données au format XML

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

Assurez-vous de définir une limite raisonnable dans la fenêtre d'options SSMS, en fonction du résultat attendu. enter image description here

Cela fonctionnera si le texte que vous renvoyez ne contient pas de caractères non codés tels que & au lieu de &amp;, ce qui entraînera l'échec de la conversion XML.

Renvoi de données à l'aide de PowerShell

Pour cela, vous aurez besoin du module PowerShell SQL Server installé sur la machine sur laquelle vous exécuterez la commande.

Si vous êtes tous configurés, configurez et exécutez le script suivant:

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"

Assurez-vous de définir le paramètre -MaxCharLength sur une valeur adaptée à vos besoins.

1
dvlsc

Le moyen le plus simple de visualiser rapidement une colonne varchar/text volumineuse:

declare @t varchar(max)

select @t = long_column from table

print @t
0
Rafael Lenartowicz