Ich zufällig gerade gelesen Maximum Capacity Specification for SQL Server 2008 und sah maximal 8060bytes pro Reihe? Was zum ... Nur 8KB pro Zeile erlaubt? (Ja, ich sah "row-overflow storage" spezielle Handhabung, ich spreche über Standard-Verhalten)SQL Server maximal 8 KB pro Zeile?
Habe ich hier etwas falsch verstanden? Ich bin mir sicher, dass ich bin bin bin sicher, ich sah binäre Objekte mit mehreren MB Größen in SQL Server-Datenbanken gespeichert. Ist diese ominöse pro Zeile wirklich eine Tabellenzeile wie in einer Zeile, mehrere Spalten bedeuten?
Also wenn ich drei Spalten mit jeweils 4000 Zeichen drin habe (angenommen, drei juristische Dokumente in Textboxen geschrieben ...) - spuckt der Server eine Warnung aus?
Es muss nicht eine Max-Spalte sein, die auf eine andere Seite verschoben wird, obwohl ich glaube, dass sie automatisch so behandelt werden. Wenn Sie das Limit überschreiten, wird die größte Spalte auf eine andere Seite verschoben. Ich würde auch bemerken, dass es nur ist, wenn Ihre Daten tatsächlich die Grenze von 8060 Byte überschreiten, nicht wenn die Summe der Spaltengrößen dies tut. Die Überprüfung Ihres Schemas ist eine gute Idee, wenn dies geschieht, aber wenn es nur selten vorkommt, ist es möglicherweise eine praktikable Option, SQL Server damit umgehen zu lassen. Für das OP-Beispiel ist es wahrscheinlich besser, jedes Dokument separat zu speichern und eine Join-Tabelle beizubehalten, um N Dokumente zu speichern. – tvanfosson
Ja. Dies ist das SQL Server 2000-Verhalten, das ich denke (Warnung bei CREATE TABLE, ein Fehler bei INSERT oder UPDATE). SQL Server 2008 wird den Überlauf behandeln. –
@tvanfosson: Ja, es ist im Grunde still und automatisch, obwohl es für sp_tableoption mit der Option "große Werttypen außerhalb der Reihe" konfiguriert werden kann. @Martin: Ich habe das vergessen: angefangen mit SQL Server 2005. – gbn