2015-04-04 6 views
0

У меня есть следующий сценарий. Предположим, у меня есть 3 таблицы:SQL Server: восстановление из резервной копии, но сохранить идентификатор (идентификатор)

Идентификаторы являются целыми числами и первичным ключом с идентификатором (1,1).

  • Clients (ID (рк), Name)
  • Orders (ID (рк), ClientID (Ф.К.), дата)
  • OrderDetails (ID (рк), OrderID (Ф.К.), продукт, Количество , Цена)

Предположим, что я случайно удалил все записи из этих трех таблиц, но у меня есть резервная копия БД. Вопрос в том, как я могу вставить эти удаленные записи из резервной копии в текущую БД?

Я знаю, что могу просто "set identity_insert on" и использовать "insert into", но это веб-приложение, и оно должно остаться в живых, и есть вставки от пользователей.

Если я ввожу все Clients назад, их идентификатор будет другим, и Orders(ClientID) не может ссылаться на него больше. Итак, с таблицами Orders/OrderDetails.

Мне нужно каким-то образом обновить идентификаторы внешнего ключа новыми. Как я могу это сделать?

Какие-то временные таблицы для хранения записей старых идентификаторов и новых идентификаторов?

Надеется, что я сделал свой вопрос четкого :)

ответ

0

Если бы это было, я бы:

  1. Определить, какие строки в вашей резервной копии, которые не в ваших реальной базе данных
  2. Вставьте строки из своей резервной копии в свою базу данных в реальном времени со значением -1 *. Например, если строка была в резервной копии с идентификационным значением 1234, вы должны вставить ее в свою базу данных с идентификатором -1234. Это касается не только значений идентичности, но и для любых строк, которые ссылаются на эти значения (например, внешние ключи).