Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie löst man den 900-Schlüssellängen-Limit-Index für die Spalte auf, die den Datentyp varchar (4096) in SQL Server 2005 hat?

Sie können nicht - wie die Fehlermeldung bereits deutlich sagt, darf kein Indexeintrag länger als 900 Byte sein.

Sie können ein varchar(4096)-Feld nicht indizieren - Punkt. Daran führt kein Weg vorbei – es ist ein hartes SQL Server-Limit – keine Möglichkeit, es zu konfigurieren, zu ändern, zu vergrößern. Siehe Books Online – Maximale Größe von Indexschlüsseln zur Bestätigung.

Sie müssen entweder Ihre "Wert"-Spalte auf weniger als 900 Bytes begrenzen oder eine andere Möglichkeit finden, diese Daten zu speichern - oder sie einfach nicht in den Index aufnehmen. Wenn Sie nur möchten, dass Ihr "Wert"-Feld im Index einen abdeckenden Index hat (um Abfragen aus dem Indexeintrag beantworten zu können), können Sie das Feld in eine eingeschlossene Spalte verschieben im Index - diese fallen nicht unter die 900-Byte-Grenze.

CREATE NONCLUSTERED INDEX idx_ncl_2 
  ON BFPRODATTRASSOCIATION(attributeid) 
  INCLUDE (productid, value)

Dieser Index sollte funktionieren.