2016-04-21 7 views
0

Ich habe Tabelle mit über 100 Spalten, was sind varchar(200). Wir verändern alle Spalten nvarchar aber wenn das Alter Skript ausgeführt wir eine Warnmeldung wie folgt erhalten:SQL Server: maximale Zeilengröße Warnung

Achtung: Die Tabelle „TABLE_NAME“ erstellt wurde, aber seine maximale Zeilen Größe überschreitet das zulässige Maximum von 8060 Bytes. INSERT oder UPDATE zu Diese Tabelle schlägt fehl, wenn die resultierende Zeile die Größenbeschränkung überschreitet.

Sollte ich davon alarmiert werden oder kann ich es einfach ignorieren?

+2

Ich wäre besorgt, eine Tabelle zu haben, die zu groß ist, was auch immer passiert ist, um das zu einer Voraussetzung zu machen? Können Sie einige Datentypen erneut untersuchen und die Länge reduzieren? –

+0

Es könnte eine gute Zeit sein, diese 100 Spalten in etwas überschaubarer zu normalisieren. –

+0

Ignorieren Sie es? "Ja wirklich?" Ihre Einfügungen und/oder Aktualisierungen könnten nun fehlschlagen und Sie möchten sie ignorieren? –

Antwort

1

Das Problem ist tatsächlich, auch ohne zu nvarchar - 200 Bytes für jede der 100 Spalten ist 20000 Bytes pro Zeile. Die maximale Zeilengröße in SQL Server ist 8060, wie im Warnungstext angegeben. Es ist nur eine Warnung, weil die Spalten var char sind, was bedeutet, dass sie so viel Platz belegen, wie sie wirklich brauchen, um aktuelle Daten zu speichern, beginnend bei Null. Wenn jedoch die Gesamtlänge aller Spalten die Höchstgrenze für eine Zeile überschreitet, schlägt sie fehl - der Server kann diese Zeile nicht speichern. Darum geht es in dieser Warnung.

+0

Alle Felder werden nie mit einer der Zeilen gefüllt, die in diese Tabelle eingefügt wurden (maximal 30). Aber ich verstehe, was du sagst. Sollte unnötige entfernen ... – hs2d