varchar(max) MS SQL Server 2000, des problèmes?
J'ai hérité d'un asp.net projet de site web qui actuellement s'exécute SQL Server 2000 comme backend.
J'ai fait quelques changements de bases de données sur une copie locale de la db à l'aide de SQL Server 2005 Express. J'ai créer une table en utilisant varchar(max)
colonnes. Ils sont utilisés pour l'entreposage des extraits de XHTML qui sont de longueur arbitraire.
Lors de la navigation autour de sur stackoverflow, je suis tombé sur ceci:
Existe-il des inconvénients à utiliser toujours de type nvarchar(MAX)?
Utilisateur mattruma dit qu'il a découvert "à la dure" sur l'utilisation de varchar(max)
sur SQL Server 2000.
Que dois-je utiliser à la place de varchar(max)
étant donné que la base de données s'exécute sur SQL Server 2000?
Merci d'avance pour toute aide!
Vous devez vous connecter pour publier un commentaire.
Il sonne comme le
varchar(MAX)
limitations sont un point discutable si votre DB SQL Server 2000, ce qui ne les supporte pas. Si vous avez plus de 8K caractères de magasin, vous êtes assez bien à gauche avec la seule autre option, unTEXT
colonne. Toutefois, méfiez-vous queTEXT
colonnes ont beaucoup de limitations.Par exemple, vous ne pouvez pas trier ou regrouper sur eux facilement, et vous ne pouvez les comparer pour l'équivalence avec d'autres colonnes. C'est que vous ne pouvez pas dire
Select * from mytable where Mytext1 = mytext2
.D'autres préoccupations:
NText
ouNVarchar
colonne indépendamment de la façon dont vous allez à la prise en charge d'Unicode.varchar(8000)
colonne est susceptible d'être souvent proche du plein, vous pourriez avoir des problèmes avec la limite de ligne de 8K. Gardez cela à l'esprit aussi.VARCHAR(Max)
a été introduit dans SQL Server 2005, et ne fonctionnera pas sur SQL Server 2000. Vous devez utiliserVARCHAR(8000)
en supposant que sera assez grande. Sinon, vous aurez besoin d'utiliserTEXT
Modifier
Aussi, si vous passez à
VARCHAR(8000)
gardez à l'esprit il y a une limite qu'une seule ligne ne peut pas avoir plus de 8 060 octets. Donc, si vous remplissez unvarchar(8000)
table et un tas d'autres grandes colonnes, vous obtiendrez une erreur. C'est là queText
vient dans.Text
a des performances implication, car par défaut il est stocké dans un emplacement distinct, et ils gardent un pointeur sur un tableau. Il existe une option qui change ce comportement, de sorte que les types de texte sont conservés dans la table jusqu'à ce qu'ils atteignent une certaine taille. Si vous avez la plupart des petites gouttes que vous pourriez vouloir l'activer.L'utilisation d'une colonne de TEXTE.
Cela dépend de vos besoins. Vous pouvez utiliser une colonne de TEXTE au lieu de VARCHAR(MAX), mais vous devez être sûr que votre application n'a pas besoin de faire une recherche sur ce domaine, comme vous ne pouvez pas faire comme les comparaisons sur le TEXTE et NTEXT champs.
Si vous pouvez vous limiter à 8000 caractères, je voudrais utiliser un VARCHAR(8000) colonne pour stocker les informations.