SSMS et SQLCMD affiche uniquement les premiers 8000 caractères
-
20-09-2019 - |
Question
Dans SSMS lorsque je tente d'exécuter:
SELECT CONVERT(VARCHAR(MAX), REPLICATE('a',9000))
Je ne vois que les premiers 8000 caractères affichés. Les paramètres Outil >> Options >> Résultats de la requête >> >> Résultats Sql Server à la grille est à 65534 et Résultats de Texte est 8192.
De même, lorsque je tente de faire exécuter par SQLCMD
sqlcmd -S Server -E -y 0 -Q "SELECT CONVERT(VARCHAR(MAX), REPLICATE('a',9000))" -o out.txt
Je ne vois que 8000 charecters.
Le drapeau -y 0 est censé le mettre à 1 MB. Mais je ne suis pas plus de 8000 caractères.
Quel pourrait être le problème?
Merci,
_UB
La solution
REPRODUIRE sortie est basée sur l'entrée de type de données. Donc, ce qui explique sqlcmd.
Si l'expression de la chaîne est pas de type varchar (max) ou nvarchar (max), REPLICATE tronque la valeur de retour à 8000 octets. Pour revenir valeurs supérieure à 8000 octets, l'expression de la chaîne doit être explicitement jeter à la grande valeur appropriée type de données.
Alors, utilisez ce SELECT REPLICATE(CONVERT(VARCHAR(MAX), 'a'), 9000)
Et SSMS n'a jamais montré toutes les données de texte (n'a pas non plus Analyseur de requêtes)
Autres conseils
VARCHAR (MAX) est seulement capable de contenir 8000 caractères
De MSDN:
varchar [(n | max)] - Longueur variable, le caractère non-Unicode Les données. n peut être une valeur comprise entre 1 et 8000. max indique que le maximum la taille de stockage est de 2 ^ 31-1 octets
Joseph (ci-dessous) dit, de tenir plus, utilisez un texte ou le type de données ntext, mais si vous voulez être en mesure de rechercher, alors vous auriez besoin d'une forme d'indexation de texte intégral est activée.