sql 2014 还原备份的数据库后 新插入的数据都会报“违反了PRIMARY KEY 约束’PK_主键’。不能在对象’dbo.表名’ 中插入重复键”错误。
原因:使用DBCC CHECKIDENT(表名, NORESEED) 查到当前标识值,如果重置变成1,而还原的数据表并不是空表就会报上面的错误。
解决方法:循环所有的表,重置当前标识值,重置方法 DBCC CHECKIDENT(表名, RESEED)
if exists (select * from tempdb..sysobjects where id=OBJECT_ID('tempdb..#tmpTable'))
begin
drop table #tmpTable
end
create table #tmpTable
(
id int,
columnname varchar(100)
)
--将改数据库的所有表名插入到临时表
insert into #tmpTable
select ROW_NUMBER() over (order by id) rownumber,name from sysobjects where xtype='U'
declare @row int
declare @nowcount int
select @row= COUNT(1) from #tmpTable
select @nowcount=1
while @nowcount <= @row
begin
declare @nowname varchar(100)
select @nowname=columnname from #tmpTable where id=@nowcount
--重置标识值
DBCC CHECKIDENT(@nowname, RESEED)
select @nowcount = @nowcount + 1
end