sql2014 还原备份后标识种子重置

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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值