Die Spalte in der Tabelle ist von einem Typ, der für die Verwendung als Schlüsselspalte in einem Index ungültig ist

Ich habe einen Tisch, wo ich die Mitarbeiterdetails speichere. Ich möchte die Tabelle ändern und eine der Spalte emp_code als Primärschlüssel setzen. Sein datatyp ist nvarchar(max) , aber ich bin nicht in der Lage, es als Primärschlüssel zu setzen.

Ich laufe die folgende Abfrage:

 ALTER TABLE user_master ADD PRIMARY KEY (emp_code) 

aber es gibt mir einen Fehler:

Msg 1919, Stufe 16, Zustand 1, Zeile 1
Die Spalte emp_code in der Tabelle user_master ist von einem Typ, der für die Verwendung als Schlüsselspalte in einem Index ungültig ist.
Msg 1750, Stufe 16, Zustand 0, Zeile 1
Konnte nicht erstellen. Siehe vorherige Fehler.

Wie kann ich das überwinden?

Der Schlüssel eines Index darf eine Gesamtgröße von 900 Bytes nicht überschreiten. Ändern Sie den datatyp in NVARCHAR(450) . Wenn das nicht geeignet ist, verwenden Sie einen Surrogatschlüssel (in der Regel eine IDENTITY Spalte).

Du kannst varchar(max) nicht benutzen. Es ist nicht entworfen, um Primärschlüssel zu speichern.

Finden Sie heraus, was der längste Mitarbeiter-Code, und erstellen Sie eine Größe nvarchar, die Ihren längsten Fall umfasst.

zB der längste Mitarbeitercode ist 70 character, versuch: –

 nvarchar(100) 

… nur um dich zu decken.

Ja du bist richtig.Warnung! Die maximale Schlüssellänge beträgt 900 Bytes. Der Index PK__bookmark__2DFA2B0E164452B1 hat eine maximale Länge von 2000 Bytes. Bei einer Kombination von großen Werten schlägt der Insert / Update-Vorgang fehl. nicht Gebrauch von varchar(max)