同意楼上 要不就用 BEGIN TRANSACTION CREATE TABLE dbo.Tmp_tb ( ... ) ON [PRIMARY] GO SET IDENTITY_INSERT dbo.Tmp_tb ON GO IF EXISTS(SELECT * FROM dbo.tb) EXEC('INSERT INTO dbo.Tmp_tb (...) SELECT ... FROM dbo.tb TABLOCKX') GO SET IDENTITY_INSERT dbo.Tmp_tb OFF GO DROP TABLE dbo.tb GO EXECUTE sp_rename N'dbo.Tmp_tb', N'tb', 'OBJECT' GO COMMIT
不行吗? alter table tablename alter column a int identity(1,1) with nocheck 试试看,我没有试过
要不就用
BEGIN TRANSACTION
CREATE TABLE dbo.Tmp_tb
(
...
) ON [PRIMARY]
GO
SET IDENTITY_INSERT dbo.Tmp_tb ON
GO
IF EXISTS(SELECT * FROM dbo.tb)
EXEC('INSERT INTO dbo.Tmp_tb (...)
SELECT ... FROM dbo.tb TABLOCKX')
GO
SET IDENTITY_INSERT dbo.Tmp_tb OFF
GO
DROP TABLE dbo.tb
GO
EXECUTE sp_rename N'dbo.Tmp_tb', N'tb', 'OBJECT'
GO
COMMIT
alter table tablename alter column a int identity(1,1) with nocheck
试试看,我没有试过