2017-07-31 91 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是不可行的。 –