sql >> Base de Datos >  >> RDS >> Sqlserver

Reemplazar la columna de identidad de int a bigint

Bueno, no será una manera rápida y fácil de hacer esto, realmente...

Mi enfoque sería este:

  1. cree una nueva tabla con una estructura idéntica, excepto por el ID siendo la columna BIGINT IDENTITY en lugar de INT IDENTITY

    ----[ ponga su servidor en modo exclusivo de usuario único aquí; el usuario no puede usar su servidor a partir de este momento]----

  2. encuentre y deshabilite todas las restricciones de clave externa que hacen referencia a su tabla

  3. active SET IDENTITY_INSERT (your new table) ON

  4. inserte las filas de su tabla anterior en la tabla nueva

  5. desactiva SET IDENTITY_INSERT (your new table) OFF

  6. elimina tu tabla anterior

  7. cambie el nombre de su nueva tabla al nombre de la tabla anterior

  8. actualice todas las tablas que tienen una referencia FK a su tabla para usar BIGINT en lugar de INT (eso debería ser factible con un simple ALTER TABLE ..... ALTER COLUMN FKID BIGINT )

  9. volver a crear todas las relaciones de clave externa de nuevo

  10. ahora puede devolver su servidor al uso normal de múltiples usuarios nuevamente