SQL Server:从备份恢复但保留ID(身份)引用

问题描述:

我有以下情形。假设我有3个表格:SQL Server:从备份恢复但保留ID(身份)引用

ID是整数和带有标识(1,1)的主键。

  • Clients(ID(PK),名称)
  • Orders(ID(PK),客户端ID(FK),日期)
  • OrderDetails(ID(PK),订单ID(FK),产品,数量,价格)

比方说,我意外删除了这3个表中的所有记录,但我有一个数据库备份。问题是如何将已从备份数据库中删除的记录重新插入当前数据库?

我知道我可以简单地"set identity_insert on"并使用"insert into",但它是一个Web应用程序,它必须保持活动状态,并且有来自用户的插入。

如果我插入所有Clients回来,他们的ID将不同,并且Orders(ClientID)不能再指向那个。所以与Orders/OrderDetails表。

我需要一些方法来更新新的外键id。我怎样才能做到这一点?

某种临时表保留旧ID和新ID的记录?

希望我做我的问题明确:)

如果是我,我会:

  1. 确定哪些行是在您的备份是不是在你的活动数据库
  2. 使用值为-1 *的身份值将备份中的行插入到实时数据库中。例如,如果该行在标识值为1234的备份中,则需要将其插入到实时数据库中,标识值为-1234。这不仅适用于身份值,而且适用于引用这些值的任何行(即外键)。