2017-08-07 19 views
0

Heute bin ich mit einer seltsamen Nachricht konfrontiert. Ich bin nicht sicher, ob es nur einen Fehler:Wird die Größe des Datentyps reduziert, wird die maximale Größe des Index überschritten?

enter image description here

Die Tabellen werden von ASP.NET Identität erstellt. Sie verwenden jedoch nvarchar(450) für die ID, die ich in anderen Tabellen nicht verwenden kann, da der Index 900 Byte überschreitet. Daher versuche ich, es zu reduzieren, aber wie könnte die PK_AspNetUserRoles in erster Linie erstellt werden? Ist es nur ein SSMS-Fehler?

Antwort

0

Was ist Ihre SSMS-Version? IMHO, t ist ein Fehler, ich kann dieses Problem in 12.0.4100.1 nicht reproduzieren.

Sie können ohne Neuerstellung der Index nicht Spaltentyp ändern, so dass der Fehler, die Sie möglicherweise erhalten könnte:

Msg 5074, Ebene 16, Status 1, Zeile 4 Der Index ist ‚PK_AspNetUserRoles‘ abhängig von der Spalte ' Benutzeridentifikation'. Nachricht 4922, Ebene 16, Status 9, Zeile 4 ALTER TABLE ALTER COLUMN Benutzer-ID ist fehlgeschlagen, da ein oder mehrere Objekte auf diese Spalte zugreifen.

Aber mein SSMS gerade tat still wie folgt vor:

  • schaffen neue Tabelle mit dem gleichen Namen und tmp-Präfix mit nvarchar (150) -Spalte
  • Einsatz in neue Tabelle select * from original Tabelle
  • Tropfen ursprüngliche Tabelle
  • neue Tabelle als alte Tabelle auf es
  • erstellen Index PK umbenennen

Es wurde kein Fehler angezeigt

+0

Meine Version ist '13.0.16106.4'. In diesem Dialog habe ich versucht, trotzdem auf Ja zu klicken, und SSMS hat automatisch den Datentyp aller Fremdschlüssel in den neuen geändert ('nvarchar (450)' in 'nvarchar (150)') –

+0

Fremdschlüssel? Ihr Beitrag sagte nichts über sie, der Fehler ist über Primärschlüssel – sepupic

+0

Entschuldigung. Ich habe die 'Id'-Spalte der' AspNetUsers'-Tabelle geändert. Und "UserId" von "AspNetUserRoles" bezieht sich auf "Id", und es ist auch Teil des Primärschlüssels. –

Verwandte Themen