【问题标题】:SQL Server : restore from backup but keep ID (identity) referencesSQL Server:从备份中恢复但保留 ID(身份)引用
【发布时间】:2015-06-09 04:05:08
【问题描述】:

我有以下情况。假设我有 3 张桌子:

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

  • Clients(ID (pk),姓名)
  • Orders(ID (pk)、ClientID (fk)、日期)
  • OrderDetails(ID (pk)、OrderID (fk)、产品、数量、价格)

假设我不小心删除了这 3 个表中的所有记录,但我有一个数据库备份。问题是如何将那些从备份数据库中删除的记录重新插入到当前数据库中?

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

如果我将所有Clients 插入后面,它们的ID 将不同,Orders(ClientID) 不能再引用它。等等Orders/OrderDetails 表。

我需要一些方法来用新的外键 id 更新。我该怎么做?

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

希望我把我的问题说清楚了 :)

【问题讨论】:

    标签: sql-server database backup recovery


    【解决方案1】:

    如果是我,我会:

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

    【讨论】:

      猜你喜欢
      • 2013-03-28
      • 1970-01-01
      • 2013-03-31
      • 2020-03-10
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      相关资源
      最近更新 更多