Você não pode alterar as colunas existentes para identidade.
Você tem 2 opções,
-
Crie uma nova tabela com identidade e elimine a tabela existente
-
Crie uma nova coluna com identidade e solte a coluna existente
Abordagem 1. (Nova tabela ) Aqui você pode reter os valores de dados existentes na coluna de identidade recém-criada. Observe que você perderá todos os dados se 'se não existir' não for satisfeito, portanto, certifique-se de colocar a condição na queda também!
CREATE TABLE dbo.Tmp_Names
(
Id int NOT NULL
IDENTITY(1, 1),
Name varchar(50) NULL
)
ON [PRIMARY]
go
SET IDENTITY_INSERT dbo.Tmp_Names ON
go
IF EXISTS ( SELECT *
FROM dbo.Names )
INSERT INTO dbo.Tmp_Names ( Id, Name )
SELECT Id,
Name
FROM dbo.Names TABLOCKX
go
SET IDENTITY_INSERT dbo.Tmp_Names OFF
go
DROP TABLE dbo.Names
go
Exec sp_rename 'Tmp_Names', 'Names'
Abordagem 2 (Nova coluna ) Você não pode reter os valores de dados existentes na coluna de identidade recém-criada. A coluna de identidade conterá a sequência de números.
Alter Table Names
Add Id_new Int Identity(1, 1)
Go
Alter Table Names Drop Column ID
Go
Exec sp_rename 'Names.Id_new', 'ID', 'Column'
Consulte a seguinte postagem do Fórum do Microsoft SQL Server para obter mais detalhes:
Como alterar a coluna para a identidade (1,1)