2009-09-01 8 views
1

Dans SSMS quand je tente d'exécuter:SSMS et affiche SQLCMD seulement les premiers 8000 caractères

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 réglé sur 65534 et résultats au texte est fixé à 8192.

Aussi 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 vois seulement 8000 chartes.

L'indicateur -y 0 est supposé le définir sur 1 Mo. Mais je ne fais pas plus de 8000 caractères.

Quel pourrait être le problème?

grâce,
_UB

Répondre

3

REPLICATE sortie est basée sur l'entrée de type de données. Donc, cela explique sqlcmd.

Si expression de chaîne est pas de type varchar (max) ou nvarchar (max), REPLICATE tronque la valeur de retour à 8000 octets. Pour renvoyer les valeurs supérieur à 8 000 octets, l'expression de chaîne doit être explicitement convertie en le type de données de grande valeur approprié.

, 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)

+0

ahh ... REPLIQUEZ. Je le savais. Je n'y ai pas pensé avant de poster. Ma faute. Merci pour la réponse. –

0

VARCHAR (MAX) est seulement capable de contenir 8000 caractères

see here

De MSDN:

varchar [(n | max)] - Caractère de longueur variable, non-Unicode, . n peut être une valeur comprise entre 1 et 8 000. max indique que la taille de stockage maximale est 2^31-1 octets

Comme Joseph (ci-dessous) dit, à détenir plus, utiliser un texte ou le type de données ntext, mais si vous voulez être en mesure de rechercher que , alors vous auriez besoin d'une forme d'indexation de texte intégral activée.

Better Link

+0

varchar (max) est un type LOB! Votre citation dit réellement "max indique que la taille de stockage maximale est de 2^31-1 octets" – gbn

+0

mes appologies sur le lien pauvre, voir ici http: // doc.ddart.net/mssql/sql70/da-db_1.htm pour une mise en page complète. En outre, c'est la taille de stockage, pas les caractères max. – CodeMonkey1313

+0

Pire encore: le nouveau lien est pour SQL 7 qui n'a pas varchar (max) qui * remplace le type de données texte * – gbn