Um aplicativo está usando um banco de dados SQL Server 2008 que possui colunas de ID, mas essas colunas não são chaves primárias e não possuem nenhum IDENTITY
atributo.
O que preciso fazer agora é adicionar os PKs e IDENTITY
atributos. No entanto, os IDs antigos devem ser preservados.
Além disso, preciso fazer isso com comandos SQL (sem GUI).
problemas
Eu tentei todas as soluções a seguir, sem sucesso.
- Eu não posso diretamente
INSERT
/UPDATE
umIDENTITY
valor - Não consigo desativar
IDENTITY
a restrição para mais de uma tabela simultaneamente - Não consigo copiar dados com
ALTER TABLE ... SWITCH TO
(não funciona se a tabela de origem não tiver PK e a tabela de destino tiver PK) Não posso usar sequências em vez de
IDENTITY
s para chaves primárias, porque 2008 não suporta sequênciasO seguinte também não funciona:
SET IDENTITY_INSERT mydb.dbo.AZIENDE_NEW ON; INSERT INTO mydb.dbo.AZIENDE_NEW SELECT * FROM mydb.dbo.AZIENDE_OLD;
eu recebo erro
Msg 8101: Um valor explícito para a coluna de identidade na tabela 'mydb.dbo.AZIENDE_NEW' só pode ser especificado quando uma lista de colunas é usada e IDENTITY_INSERT está ON
Isso me parece ilógico. IDENTITY_INSERT
deve ser ON
para essa mesa...
Estou aberto a outras soluções, mas não tenho mais ideias.