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

Ersetzen Sie die Identitätsspalte von int zu bigint

Nun, es wird wirklich kein schneller und einfacher Weg sein, dies zu tun ....

Mein Ansatz wäre folgender:

  1. Erstellen Sie eine neue Tabelle mit identischer Struktur - bis auf die ID Spalte ist BIGINT IDENTITY statt INT IDENTITY

    ----[ Versetzen Sie Ihren Server hier in den exklusiven Single-User-Modus; Benutzer kann Ihren Server ab diesem Zeitpunkt nicht mehr verwenden ]----

  2. Finden und deaktivieren Sie alle Fremdschlüsseleinschränkungen, die auf Ihre Tabelle verweisen

  3. Schalten Sie SET IDENTITY_INSERT (your new table) ON

  4. fügen Sie die Zeilen aus Ihrer alten Tabelle in die neue Tabelle ein

  5. Schalten Sie SET IDENTITY_INSERT (your new table) OFF

  6. lösche deine alte Tabelle

  7. Benennen Sie Ihre neue Tabelle in den alten Tabellennamen um

  8. aktualisieren Sie alle Tabellen, die eine FK-Referenz zu Ihrer Tabelle haben, um BIGINT zu verwenden statt INT (Das sollte mit einem einfachen ALTER TABLE ..... ALTER COLUMN FKID BIGINT machbar sein )

  9. alle Fremdschlüsselbeziehungen neu erstellen

  10. Jetzt können Sie Ihren Server wieder in den normalen Multi-User-Betrieb zurückversetzen