SQL Server Fehler - CREATE UNIQUE INDEX

2. Juli 2009 14:15

Hallo,

auf dem "Neuland" SQL Server haben wir folgendes Problem.
Wir haben unsere DB von Version 4.1 auf 5.0 (Build 26084) (SQL Server 2005) technisch geUpdatet. Auf den Tabellen war das Propertie "MaintainSQL Index" deaktiv.

Wenn ich nun z.B. auf der Kreditorenpsotentabelle dieses Propertie aktiviert "knallt" es beim Compilieren.
Eine Recherche ergab, das der 6.te Key zu lang ist (19 Felder werden im Designer angezeigt)). Der Server hat 'nur' 17 Felder angelegt :shock:

- Wie kann dieses sein (ein Key darf in Navision 20 Felder - (minus) Primkey sein!)?
- Wie werden die Keys auf dem Server gemananagt?
- Ist es unser Problem oder gibt es ein Hotfix?

- Wie kann ich dieses Problem beheben?

******************
Beim Suchen bin ich auf folgenden Beitrag gestoßen:
http://blog.sqlauthority.com/2007/04/23/sql-server-understanding-new-index-type-of-sql-server-2005-included-column-index-along-with-clustered-index-and-non-clustered-index/
Unter "Included Column Index " wird geschrieben,
Non-key columns can be included in non-clustered index to avoid exceeding the current index size limitations of a maximum of 16 key columns and a maximum index key size of 900 bytes.


Kann das die Ursache sein (sofern ich den Text richtig verstanden habe)?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: SQL Server Fehler - CREATE UNIQUE INDEX

3. Juli 2009 10:53

Aaaaalso:

Zunächst mal: Der eingesetzte NAV Build 26084 ist uralt (5.0 SP1 RTM) und ziemlich buggy - inzwischen sind wir bei Build 29125 (5.0 SP1 Update 1.21) - schon alleine das kann hier zumindest Teil des Problems sein ...

Der Fehler tritt ja auf, wenn der CLUSTERED INDEX (VSIFTIDX) der VSIFT Sicht (...$VSIFT$5) erstellt wird ...

Aber: Im SQL Server kann ein Index max. 16 Felder beinhalten. Wenn ich mich nicht verzählt habe, dann enthält das CREATE INDEX statement auch nur 16 Felder. Der vollständige Key hat - wie Du sagst - aber 19 Felder, d.h. NAV hat hier ein paar Felder beim CREATE INDEX "abgeschnitten".
Die VSIFT Sicht wurde aber mit allen 19 Feldern angelegt, dabei wird nach allen "Key" Feldern gruppiert um die Summen entsprechend zu berechnen. Nach Gruppierung auf alle 19 Felder ist jeder Datensatz eindeutig.

Nun soll der Index VSIFTIDX darauf erzeugt werden - als CLUSTERED INDEX und UNIQUE (muss so sein). Jetzt fehlen diesem Index aber 3 Felder - ergo: die EINDEUTIGKEIT der Datensätze ist nicht mehr gegeben (eindeutig wird's erst nach 19 Feldern!) - es kommt soz. zu Doubletten, und das darf nicht sein.
DAS ist es, was die Fehlermeldung mitteilt.

Es bleibt also nix anderes übrig als "MaintainSIFTIndex" auf FALSE zu setzen, oder den Key zu kürzen ...

Re: SQL Server Fehler - CREATE UNIQUE INDEX

3. Juli 2009 11:01

stryk hat geschrieben:- inzwischen sind wir bei Build 29125 (5.0 SP1 Update 1.21)
Nur der Vollständigkeit halber: Am neuesten für 5.0 SP1 und als KB-Artikel zum Download veröffentlicht ist die Build 29245, KB 971797.