Question

J'ai hérité d'un projet de site Web asp.net qui exécute actuellement SQL Server 2000 comme back-end.

Je l'ai fait quelques changements sur les bases de données une copie locale de la DB en utilisant SQL Server 2005 Express. J'ai créer une table en utilisant des colonnes de varchar(max). Ils sont utilisés pour des extraits enregistrés de XHTML qui sont de longueur arbitraire.

Lors de la navigation autour de stackoverflow je suis tombé sur ceci: Y a-t-il des inconvénients à l'utilisation toujours nvarchar (MAX)?

mattruma utilisateur dit qu'il a trouvé la "dure" sur l'utilisation varchar(max) sur SQL Server 2000.

Que dois-je utiliser au lieu de varchar(max) étant donné que la base de données en direct fonctionne sur SQL Server 2000?

Merci d'avance pour toute aide!

Était-ce utile?

La solution

Il semble que les limites de varchar(MAX) sont un point discutable si votre vie est DB SQL Server 2000, ce qui ne les supporte pas. Si vous avez plus de 8K caractères pour vous stocker sont à peu près à gauche avec la seule autre option, une colonne de TEXT. Toutefois, méfiez-vous que les colonnes de TEXT ont beaucoup de limites aussi.

Par exemple, vous ne pouvez pas trier ou d'un groupe 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 pertinentes:

  • Je suggère d'utiliser une colonne de NText ou NVarchar quelle que soit la façon dont vous allez soutenir Unicode.
  • Si la table a beaucoup d'autres colonnes et la colonne de varchar(8000) est susceptible d'être souvent proche de la pleine, vous pouvez avoir des problèmes avec la limite de la ligne de 8K. Gardez cela à l'esprit aussi.

Autres conseils

VARCHAR(Max) a été introduit dans SQL Server 2005, et ne fonctionnera pas sur SQL Server 2000. Vous devez utiliser soit VARCHAR(8000) en supposant que ce sera assez grand. Sinon, vous devrez utiliser TEXT

Modifier

Aussi, si vous passez à VARCHAR(8000) garder à l'esprit il y a une limite qu'une seule ligne ne peut pas avoir plus de 8060 octets. Donc, si vous remplissez une table varchar(8000) et un tas d'autres grandes colonnes, vous obtiendrez une erreur. C'est là Text entre en jeu.

Text a une incidence sur le rendement, car par défaut, il est stocké dans un endroit séparé, et ils gardent un pointeur dans une table. Il y a une option de jeu qui change ce comportement afin 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 petits blobs vous pouvez activer.

Utiliser 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 mise en œuvre n'a pas besoin d'une recherche sur ce domaine, comme vous ne pouvez pas faire comme des comparaisons sur les champs de texte et NTEXT.

Si vous ne pouvez vous limiter à 8000 caractères, j'utiliser une colonne VARCHAR (8000) pour stocker les informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top