Je viens de lire le Maximum Capacity Specification for SQL Server 2008 et vu un maximum de 8060bytes par ligne? Qu'est-ce que ... Seulement 8Ko par rangée permis? (Oui, j'ai vu "manipulation de stockage de débordement de ligne" manipulation spéciale, je parle de comportement standard)SQL Server 8 Ko maximum par ligne?
Ai-je mal comprendre quelque chose ici? Je suis sûr que je l'ai fait, car 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 que ce sinistre par ligne signifie vraiment une ligne de table comme dans une ligne, plusieurs colonnes?
Alors quand j'ai trois colonnes nvarchar
avec chaque 4000 caractères dedans (supposons trois documents légaux écrits dans des boîtes de texte ...) - le serveur crache un avertissement?
Il ne doit pas être une colonne max pour être poussé vers une autre page, cependant, je crois qu'ils sont gérés automatiquement de cette façon. Si vous dépassez la limite, la plus grande colonne sera transmise à une autre page. Je note également que c'est seulement lorsque vos données dépassent la limite de 8060 octets, pas lorsque la somme des tailles de colonnes le fait. Le réexamen de votre schéma est une bonne idée lorsque cela se produit, mais si cela ne se produit que rarement, laisser SQL Server le gérer pourrait également être une option viable. Pour l'exemple OP, stocker chaque document séparément et conserver une table de jointure pour stocker N documents est probablement préférable. – tvanfosson
Oui. C'est le comportement de SQL Server 2000 je pense (avertissement sur CREATE TABLE, une erreur sur INSERT ou UPDATE). SQL Server 2008 gérera le débordement. –
@tvanfosson: oui, il est fondamentalement silencieux et automatique bien qu'il puisse être configuré avec l'option "types de valeur importants en dehors de la ligne" pour sp_tableoption. @ Martin: J'ai oublié à ce sujet: a commencé avec SQL Server 2005. – gbn