1946: Fehler bei dem Vorgang. Der Indexeintrag mit der Länge von %1! Bytes für den '%2!'-Index überschreitet die maximale Länge
Fehlermeldung:
Meldung 1946, Ebene 16, Status 3, Zeile 10
Fehler bei dem Vorgang. Der Indexeintrag mit der Länge von %1! Bytes für den '%2!'-Index überschreitet die maximale Länge von %3! Bytes.
Ebene:
16.
Beschreibung:
Diese Fehlermeldung erscheint, wenn man versucht, eine Indexspalte, die die zulässige Maximallänge von 900 Bytes überschreitet einzufügen oder eine bereits existierende Zeile zu aktualisieren.
Auswirkungen:
Das SQL Statement kann zwar geparst werden, jedoch zur Laufzeit wird der Fehler ausgelöst.
Behebung:
Fehler der Ebene 16 sind Fehler, die vom Anwender hervorgerufen werden. Sie können und müssen vom Anwender korrigiert werden. Das Statement kann so nicht ausgeführt werden. Die zulässige Maximallänge für Indexspalten beträge 900 Bytes.
Versionen:
Alle Versionen von SQL Server.
Beispiele:
IF OBJECT_ID ('dbo.t') IS NOT NULL
DROP TABLE dbo.t;
GO
CREATE TABLE dbo.t (s1 varchar(1000) PRIMARY KEY);
INSERT INTO dbo.t SELECT REPLICATE ('a', 900);
SELECT
*
FROM
dbo.t;
UPDATE dbo.t
SET
s1 = s1 + 'b';
Anmerkungen:
Im obigen Beispiel wird zunächst die Tabelle dbo.t erstellt. Dabei erhält man schon die informelle Fehlermeldung 1945. Das nachfolgende INSERT Statement verläuft fehlerfrei, aber das anschliessende UPDATE verletzt die Maximallänge von 900 Bytes für Schlüsselspalten eines Index und löst den Fehler aus.