推荐的方法是在批量加载数据时删除所有索引,包括主键,因为它可以加快加载速度并减少事务日志的负载。但是,您需要确保在加载之前将IDENTITY 属性添加到新表中,并使用SET IDENTITY_INSERT .... ON 允许您插入旧的标识值。
对于这个例子,让我们假设这是您的目标表:
CREATE TABLE dbo.YourTable(YourTableId INT IDENTITY(1,1), SomeData INT)
然后您需要使用IDENTITY_INSERT...ON 来确保您可以插入源表中的数据:
SET IDENTITY_INSERT dbo.YourTable ON
--copy data from source table
INSERT INTO dbo.YourTable
(YourTableId, SomeData)
SELECT 1,1
UNION
SELECT 2,2
迁移数据后,您需要再次关闭IDENTITY_INSERT:
SET IDENTITY_INSERT dbo.YourTable OFF
添加主键:
ALTER TABLE dbo.[YourTable] ADD CONSTRAINT PK_YourTable_YourTableID PRIMARY KEY CLUSTERED (YourTableID)
然后用RESEED 值等于当前最大 PK 值重新设置主键
DBCC CHECKIDENT ('[YourTable]', RESEED, 2)
运行此命令后,将插入此记录,YourTableId 的值为 3
INSERT INTO dbo.YourTable
SELECT 3