Frage

Ich bin nur zufällig auf der Maximale Kapazität Spezifikation für SQL Server 2008 und sehen maximal 8060bytes pro Zeile ? Was die ... Nur 8 KB pro Zeile erlaubt? (Ja, ich sah „Zeilenüberlaufspeicher“ eine besondere Behandlung, ich spreche über Standardverhalten)

Habe ich falsch verstehen hier etwas? Ich bin sicher, dass ich, weil ich sicher, dass ich sehe binäre Objekte bin mit mehreren MB innerhalb von SQL Server-Datenbanken gespeichert Größen. Ist diese ominöse pro Zeile wirklich eine Tabellenzeile bedeuten, wie es in einer Zeile, mehr Spalten?

Also, wenn ich drei nvarchar Spalten mit je 4000 Zeichen dort (nehme drei Rechts in area per schriftlichen Dokumenten ...) - der Server spuckt eine Warnung

War es hilfreich?

Lösung

Ja, erhalten Sie eine Warnung auf CREATE TABLE, einen Fehler auf INSERT oder UPDATE

LOB-Typen (nvarchar (max), varchar (max) und varbinary (max) erlauben 2Gb-1 Bytes das ist, wie Sie große Datenmengen speichern würde und das, was Sie gesehen haben würde.

  • Für ein einzelnes Feld> 4000 Zeichen / 8000 Bytes würde ich nvarchar (max)

  • Für 3 x nvarchar (4000) in einer Reihe würde ich prüfen, eines der folgenden:

    • mein Design ist falsch
    • nvarchar (max) für eine oder mehrere Spalte
    • 1: 1 Kind Tabelle für die "am wenigsten bevölkerten" Spalten

Andere Tipps

2008 wird der Überlauf behandeln, während im Jahr 2000, wäre es einfach weigern, einen Datensatz einfügen, dass überschwemmt. Es ist jedoch immer noch am besten mit diesem Hintergrund zu entwerfen, weil eine beträchtliche Anzahl von Aufzeichnungen überschwemmt könnte einige Performance-Probleme in Abfrage- verursachen. Im Fall, dass Sie beschrieben, könnte ich eine verwandte Tabelle mit einer Spalte für Dokumenttyp, ein großes Feld für das Dokumenten- und und ein Fremdschlüssel für die intial Tabelle betrachten. Wenn aber es unlikey ist, dass alle drei Spalten in demselben Datensatz oder an den Max-Werten gefüllt werden würden, dann könnte das Design in Ordnung sein. Sie haben Ihre Daten zu kennen, um zu bestimmen, welche am besten ist. Eine weitere Überlegung ist es, wie Sie jetzt, bis Sie Probleme haben und dann mit einer separaten Dokument Tabelle ersetzen. Sie könnten sogar refactor durch die vorhandene Tabelle umbenennen und einen neuen erstellt und dann eine Ansicht mit dem bestehenden Tabellennamen erstellen, die die Daten aus der neuen Struktur zieht. Dies könnte eine Menge Code verhindern, brechen, obwohl Sie würde noch keine Insert oder Update-Anweisungen anpassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top