2017-07-31 88 views
-1

在进行数据库备份后,当我尝试恢复时,身份的种子被重置为0。所以当我尝试插入任何新值时,id(主键)开始1如何在进行数据库备份时保持身份

现在的问题是,我有关系数据表。在某些操作之后,从table x开始说数据移动到table y。但是,当种子设置为0时,table xtable y冲突的id值。这给了我错误。

备份时有什么办法,我们也可以保存身份的价值。

P.S. :

  1. 数据库的大小是巨大的,手动更改旁边的 不可能。
  2. 仅当表格为空时,标识的种子才重置为0

编辑:

对不起,我有点混乱,由备份,我的意思是出口(我的坏)。因为空表的种子被设置为默认值,所以我的表中的主键发生冲突,所以在导出数据库时,我还需要存储每个表的标识值。

有什么办法可以做到吗?

+0

把这个一读,可能会有帮助:https://dba.stackexchange.com/questions/163876/restoring-database -backup-makes-identity-column-start-at-1 – Leonidas199x

+1

这不是普通的备份或还原行为。确保您的工具或脚本不会导致重置。 – MWillemse

+0

@ Leonidas199x已经通过了。但那篇文章没有太多帮助。 –

回答

2

身份种子是复位或修改使用

  • BACKUP DATABASE
  • RESTORE DATABASE

您必须导出和导入的数据,这是备份时和恢复。
我再说一遍

  • BACKUP DATABASE是唯一的方式来备份数据库
  • RESTORE DATABASE是恢复数据库的唯一方式,

如果你想保留导出/导入方法,然后只需使用DBCC CHECKIDENT来重置种子。

也阅读了本明白为什么种子设置为零:
SQL server identity column values start at 0 instead of 1

+0

抱歉说备份,是的,我出口我的数据库,需要保持身份种子的价值。有什么方法可以建议。 –

+0

正如我所说,DBCC CHECKIDENT – gbn

+0

我有大约100张桌子。在每个表上触发DBCC CHECKIDENT是不可行的。 –