Відновлення видаленої таблиці або окремих її рядків

Ви повинні мати повний ланцюжок резервних копій бази даних і transaction log на весь час, протягом якого будуть здійснюватися описувані в цій статті дії:

ВАЖЛИВО. оскільки будуть відновлені дані, які не сумісні з поточним станом бази даних, може бути порушена посилальна цілісність. При спробі копіювання дані назад, до первісної базу даних, можуть проявитися обмеження і помилки ключів. Ви повинні вжити відповідних заходів, щоб уникнути можливих проблем посилальної цілісності.

Резервування поточного transaction log

Зробіть резервну копію вашого поточного transaction log з опцією NO_TRUNCATE. Для отримання додаткової інформації, див. Розділ "BACKUP" в SQL Server Books Online.

Відновлення часткової або повної резервної копії бази даних

Для отримання додаткової інформації про те, як відновити базу даних з іншим ім'ям і в інше місце, см. Такі теми SQL Server Books Online: "RESTORE" і "How to restore files to a new location (Transact-SQL)".

Відновлення резервної копії transaction log з використанням опції STOPAT

Це таке відновлення, при якому резервні копії transaction log відновлюються після відновлення часткової або повної резервної копії бази даних і зупиняється перед тим моментом часу, коли таблиця або рядки були видалені. Використовуйте опцію STOPAT в команді RESTORE LOG для того, щоб зупинити відновлення transaction log і відновить базу даних за станом до того моменту часу, коли таблиця була видалена.

ЗВЕРНІТЬ УВАГУ. Не існує опції, щоб вибірково пропустити той момент часу, коли дані були видалені. У Вас є можливість тільки відновлення бази до моменту часу, перш ніж дані були видалені, але не пізніше.

Для отримання додаткової інформації про те, як відновлювати базу до певного часу см. Такі теми SQL Server Books Online: "RESTORE", "How to restore to a point in time".

Використовуйте INSERT тільки, щоб відновити підмножина рядків або маленьку таблицю. INSERT може задіяти багато місця в transaction log при вставці рядків назад до первісної базу даних. Якщо є велика кількість індексів для початкової таблиці, це збільшує для інструкції INSERT кількість реєстрованих в журналі операцій. Ви можете відключити індекси перед вставкою втрачених даних, а потім побудувати індекси заново.

Утиліта BCP використовується, коли потрібно відновити цілу таблицю і якщо розмір цієї таблиці великий.

Якщо таблиця не існує, згенеруйте скрипт цієї таблиці, якщо Ви його не маєте, а потім створіть цим скриптом таблицю в джерельній базі.

Використовуйте утиліту BCP, щоб скопіювати дані з таблиці (рядки) відновленої бази даних в текстовий файл, а потім з текстового файлу в первісну базу даних. Для отримання додаткової інформації про те, як використовувати утиліту BCP, см. Тему SQL Server Books Online "bcp Utility".

Якщо таблиця була видалена, Ви можете скопіювати таблицю з відновленої бази даних в первісну базу даних за допомогою SELECT INTO. Для цього не потрібно попередньо створювати таблицю в джерельній базі. SELECT INTO сам її створить і скопіює дані в нову таблицю.

ЗВЕРНІТЬ УВАГУ. Оскільки Ви відновлюєте дані, які можуть бути не сумісні з поточним станом бази даних, посилальна цілісність може бути порушена. При спробі копіювання дані назад, до первісної базу даних, можуть проявитися обмеження і помилки ключів. Ви повинні вжити відповідних заходів, щоб уникнути можливих проблем посилальної цілісності.

Перестворення індексів, тригерів і обмежень

Ви повинні перебудувати всі звичайні і повнотекстові індекси, тригери і обмеження, якщо ваша первісна таблиця була загублена.

ВАЖЛИВО. Оскільки Ви відновлюєте дані, який були актуальні для іншого часу, ніж у поточної бази даних, посилальна цілісність може бути порушена. Ви повинні вжити відповідних заходів, щоб уникнути можливих проблем посилальної цілісності.

Виконайте DBCC CHECKTABLE для нової таблиці, щоб перевірити цілісність даних. Для додаткової інформації, див. Тему SQL Server Books Online "DBCC CHECKTABLE".

SQL Server Books Online:

"Designing a Backup and Restore Strategy"

"Backing Up and Restoring Databases"