it-swarm.com.de

SQL Server 2016 Maximale Bytes / Zeile

Wir haben eine Datenbank eines Drittanbieters mit einer Tabelle mit über 300 Spalten. In SQL Server 2012 wird der Fehler angezeigt, dass die zulässigen maximal 8060 Byte überschritten werden. Ich habe mich gefragt, ob ein Upgrade auf SQL Server 2016 hilfreich ist.

Hat SQL Server 2016 auch eine Beschränkung auf 8060 Byte? Ist es möglich, mehr Spalten in SQL Server 2016 zu haben, ohne dass der folgende Fehler auftritt?

Fehler: Die Tabelle "X" wurde erstellt, ihre maximale Zeilengröße überschreitet jedoch das zulässige Maximum von 8060 Byte. INSERT oder UPDATE für diese Tabelle schlagen fehl, wenn die resultierende Zeile die Größenbeschränkung überschreitet.

5
Nancy

Diese Einschränkung hängt von der physischen Kernseitenstruktur in SQL Server ab. Nein, dies hat sich in SQL Server 2016 nicht geändert (und auch nicht in SQL Server 2017).

Es gibt jedoch Möglichkeiten, dies zu umgehen. Das Wichtigste ist, einige größere Daten in eine separate Tabelle aufzuteilen. Oder leben Sie einfach mit der Warnmeldung, wenn Sie wissen, dass Ihre Daten niemals alle Spalten in derselben Zeile füllen (oder Sie können dies verhindern).

Oder gehen Sie zurück zum Drittanbieter und sehen Sie, warum sie dies haben und wie sie tatsächliche Zeilenprobleme verhindern.

12
Aaron Bertrand

So funktioniert SQL Server und es gibt Einschränkungen, um die Leistung zu verbessern, da das Seitenlimit für alle Versionen von SQL Server 8 KB beträgt.

Einfügen von etwas aus msdn, das hilfreich sein wird:

https://msdn.Microsoft.com/en-us/library/ms186981 (v = sql.105) .aspx

Zeilenüberlaufdaten über 8 KB

Eine Tabelle kann maximal 8.060 Byte pro Zeile enthalten. In SQL Server 2008 wird diese Einschränkung für Tabellen gelockert, die benutzerdefinierte Spalten vom Typ varchar, nvarchar, varbinary, sql_variant oder CLR enthalten. Die Länge jeder dieser Spalten muss immer noch innerhalb der Grenze von 8.000 Bytes liegen. Ihre kombinierten Breiten können jedoch die Grenze von 8.060 Byte überschreiten. Dies gilt für benutzerdefinierte Typspalten varchar, nvarchar, varbinary, sql_variant oder CLR, wenn sie erstellt und geändert werden, sowie für das Aktualisieren oder Einfügen von Daten.

5

Ich kann die obigen Erklärungen nicht verbessern, obwohl ich vorschlagen möchte, dass Sie eine Normalisierung in Betracht ziehen. Es gibt viele Formen, aber in richtig normalisierten Datenbankdesigns wird diese Zeilenbegrenzung selten erreicht.

Es gibt so viel gute Lektüre zu diesem Thema, aber dies ist ein gutes Intro ...

Normalisierungsartikel

0
Ollie