Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Substituir a coluna de identidade de int para bigint


Bem, não será uma maneira rápida e fácil de fazer isso, realmente ....

Minha abordagem seria esta:

  1. crie uma nova tabela com estrutura idêntica - exceto para o ID coluna sendo BIGINT IDENTITY em vez de INT IDENTITY

    ----[ coloque seu servidor em modo exclusivo de usuário único aqui; usuário não pode usar seu servidor a partir deste ponto ]----

  2. encontre e desative todas as restrições de chave estrangeira que fazem referência à sua tabela

  3. ative SET IDENTITY_INSERT (your new table) ON

  4. insira as linhas da sua tabela antiga na nova tabela

  5. desative SET IDENTITY_INSERT (your new table) ON

  6. exclua sua tabela antiga

  7. renomeie sua nova tabela para o antigo nome da tabela

  8. atualize todas as tabelas que tenham uma referência FK para sua tabela para usar BIGINT em vez de INT (isso deve ser feito com um simples ALTER TABLE ..... ALTER COLUMN FKID BIGINT )

  9. recriar todos os relacionamentos de chave estrangeira novamente

  10. agora você pode retornar seu servidor ao uso multiusuário normal novamente