Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Sostituisci la colonna identity da int a bigint

Beh, non sarà un modo semplice e veloce per farlo, davvero....

Il mio approccio sarebbe questo:

  1. crea una nuova tabella con struttura identica, ad eccezione dell'ID colonna essendo BIGINT IDENTITY invece di INT IDENTITY

    ----[ metti il ​​tuo server in modalità utente singolo esclusivo qui; l'utente non potrà utilizzare il tuo server da questo momento in poi ]----

  2. trova e disabilita tutti i vincoli di chiave esterna che fanno riferimento alla tua tabella

  3. attiva SET IDENTITY_INSERT (your new table) ON

  4. inserisci le righe dalla tua vecchia tabella nella nuova tabella

  5. disattiva SET IDENTITY_INSERT (your new table) OFF

  6. elimina la tua vecchia tabella

  7. rinomina la nuova tabella con il vecchio nome della tabella

  8. aggiorna tutte le tabelle che hanno un riferimento FK alla tua tabella per usare BIGINT invece di INT (che dovrebbe essere fattibile con un semplice ALTER TABLE ..... ALTER COLUMN FKID BIGINT )

  9. ricreare nuovamente tutte le relazioni di chiave esterna

  10. ora puoi riportare il tuo server al normale utilizzo multiutente di nuovo