270 votes

Quel est le nombre maximum de caractères pour le NVARCHAR(MAX) ?

J'ai déclaré une colonne de type NVARCHAR(MAX) dans SQL Server 2008, quel serait son maximum exact de caractères en ayant le MAX comme longueur ?

560voto

marc_s Points 321990

La taille maximale d'une colonne de type NVARCHAR(MAX) est de 2 GByte de stockage.

Depuis NVARCHAR utilise 2 octets par caractère, ce qui représente environ 1 milliard de caractères.

Le livre de Leo Tolstoj Guerre et paix est un livre de 1'440 pages, contenant environ 600'000 mots - ce qui pourrait représenter 6 millions de caractères - bien arrondis. Vous pourriez donc coller environ 166 copies de l'ensemble du livre. Guerre et paix livre dans chaque NVARCHAR(MAX) colonne.

L'espace est-il suffisant pour vos besoins ? :-)

35 votes

Juste un petit détail. NVARCHAR utilise 2 octets pour la plupart des caractères. Pour les caractères unicode supérieurs à U+00FFFF. Il utilise 4 octets.

3 votes

Du pinaillage : "La taille de stockage est de deux fois n octets + 2 octets." ( Fuente )

3 votes

"Une idée fausse courante est de penser que dans NCHAR(n) et NVARCHAR(n), le n définit le nombre de caractères. Mais dans NCHAR(n) et NVARCHAR(n), le n définit la longueur de la chaîne de caractères. paires d'octets " ([Source])( docs.microsoft.com/fr/us/sql/t-sql/data-types/ )

81voto

Madushan Points 2510

Par défaut, les valeurs nvarchar(MAX) sont stockées exactement de la même manière que les valeurs nvarchar(4000), à moins que la longueur réelle ne dépasse 4000 caractères ; dans ce cas, les données en ligne sont remplacées par un pointeur vers une ou plusieurs pages distinctes où les données sont stockées.

Si vous prévoyez que les données peuvent dépasser 4000 caractères, nvarchar(MAX) est définitivement le choix recommandé.

Source : https://social.msdn.microsoft.com/Forums/en-US/databasedesign/thread/d5e0c6e5-8e44-4ad5-9591-20dc0ac7a870/

13 votes

Il n'est pas non plus recommandé si vos données ne dépassent jamais 4000 caractères, car cela pose des problèmes d'indexation.

0 votes

Je pense que cela n'est plus d'actualité. Voir la réponse de @marc_s.

0 votes

Bonjour @FabioMilheiro , puis-je vous demander quelle partie est périmée. Est-ce la partie stockage des pointeurs ?

12voto

JiNish Points 23

Desde Documentation MSDN

nvarchar [ ( n | max ) ]

Données de chaîne Unicode de longueur variable. n définit la longueur de la chaîne et peut être une valeur comprise entre 1 et 4 000. max indique que la taille maximale de stockage est de 2^31-1 octets (2 Go). La taille de stockage, en octets, est égale à deux fois la longueur réelle des données saisies + 2 octets.

9voto

Je pense qu'en fait nvarchar(MAX) peut stocker environ 1070000000 caractères.

0 votes

Pouvez-vous expliquer d'où vous tenez ce chiffre et ce que vous entendez par "précisément" (c'est-à-dire que vous dites que ce n'est pas une limite stricte, mais qu'avec plus de caractères, il peut y avoir des problèmes ? Quels types de problèmes ? Pourquoi ?)

6 votes

Je ne suis pas sûr, mais je pense que si nvarchar utilise deux fois plus d'espace que varchar pour stocker un caractère, et que le nombre maximum de mémoire qui peut être utilisé par nvarchar(MAX) pour stocker des caractères est 2^31-1 => 2147483647, alors 2147483647/2 est 1073741824. par précisément je veux dire que ce n'est pas un nombre exact.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X