Question

Je viens de lire le passé Capacité maximale Spécification pour SQL Server 2008 et a vu un maximum de 8060bytes par ligne ? Ce que le ... Seulement 8KB par ligne autorisée? (Oui, j'ai vu une manipulation spéciale « stockage rangée de débordement », je parle de comportement standard)

Ai-je mal comprendre quelque chose? Je suis sûr que je l'ai, parce que je suis sûr que j'ai vu des objets binaires avec plusieurs tailles de MB stockées dans des bases de données SQL Server. Est-ce sinistre par ligne signifie vraiment une ligne de tableau comme dans une rangée, plusieurs colonnes?

Alors, quand j'ai trois colonnes de nvarchar avec chacun 4000 caractères y (trois documents juridiques suppose écrits en ...) - textboxes? Le serveur recrache un avertissement

Était-ce utile?

La solution

Oui, vous obtiendrez un message d'avertissement sur CREATE TABLE, une erreur sur INSERT ou UPDATE

types LOB (nvarchar (max), varchar (max) et varbinary (max) permettent octets 2Gb-1 qui est comment vous stocker de grandes quantités de données et est ce que vous auriez vu.

  • Pour un seul champ> 4000 caractères / 8000 octets J'utilise nvarchar (max)

  • 3 x nvarchar (4000) dans une rangée je considère l'un de:

    • ma conception est erronée
    • nvarchar (max) pour une ou plusieurs colonnes
    • 1: 1 table enfant pour les colonnes "moins peuplées"

Autres conseils

2008 traitera le débordement alors qu'en 2000, il serait tout simplement refuser d'insérer un enregistrement qui débordait. Cependant, il est toujours préférable de concevoir avec cela à l'esprit, car un nombre important de dossiers débordés pourrait causer des problèmes de performances dans l'interrogation. Dans le cas que vous avez décrit, je pourrais envisager une table liée avec une colonne pour le type de document, un grand champ pour le document et et une clé étrangère à la table intial. Si toutefois il est unlikey que les trois colonnes seraient remplies dans le même dossier ou aux valeurs max, puis la conception pourrait être bien. Vous devez connaître vos données pour déterminer qui est le mieux. Une autre considération est de continuer comme vous avez maintenant jusqu'à ce que vous avez des problèmes, puis remplacer par une table de document distinct. Vous pouvez même refactor en renommant la table existante et en créer une nouvelle et puis en créant une vue avec la tablename existante qui tire les données de la nouvelle structure. Cela pourrait garder beaucoup de votre code de casser bien que vous auriez encore ajuster les instructions d'insertion ou de mise à jour.

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