Відновлення видаленої таблиці або окремих її рядків, MS SQL Server, Бази даних, статті

Microsoft

ЗМІСТ










1.Введення
2.Резервування поточного transaction log
3.Відновлення часткової або повної резервної копії бази даних
4.Відновлення резервної копії transaction log з використанням опції STOPAT
5.Відновлення даних
6.Перестворення індексів, тригерів і обмежень
7.DBCC CHECKTABLE
8.Довідкова інформація

Введення

Ця стаття описує способи відновлення таблиць або рядків у базі даних з резервної копальні журналу реєстрації транзакцій (transaction log), без повного відновлення робочої бази даних. Це може бути корисно в разі видалення таблиці або рядки, а також для відновлення необхідних даних, які були присутні в попередньому стані бази даних.

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

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

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

[Зміст]

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

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

[Зміст]

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

· SQL Server 2000: Якщо ваша стратегія резервування включає резервне копіювання filegroup, Ви можете виконати тільки часткове (partial) відновлення бази даних, відновивши в нове місце тільки ту частину бази даних, яка містить таблицю, яку необхідно відновити. Для отримання додаткової інформації про цей метод, див тему “Partial Database Restore Operations”, розділ “Restore transaction log Backups” в SQL Server Books Online.

ЗВЕРНІТЬ УВАГУ: Якщо ваша стратегія не включає резервне копіювання filegroup, або Ви використовуєте SQL Server 7.0, переходите відразу до наступного кроку.

· Якщо Ви не використовуєте резервне копіювання filegroup або використовуєте SQL Server 7.0, відновіть в нову базу даних з іншим ім’ям повну резервну копію бази даних (і різницеві копії, якщо такі робилися) з опцією NORECOVERY. У Вас вийти копія бази даних, яка містить необхідні до відновлення дані. Ви можете відновлювати копію на той же самий сервер або на інший сервер.
· Для отримання додаткової інформації про те, як відновити базу даних з іншим ім’ям і в інше місце, см. наступні теми SQL Server Books Online: “RESTORE” і “How to restore files to a new location (Transact-SQL)”.

Для додаткової інформації прочитайте статтю Microsoft Knowledge Base:
INF: Using the WITH MOVE Option with the
RESTORE Statement Q221465

[Зміст]

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

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

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

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

[Зміст]

Відновлення даних

Після того, як Ви відновите базу даних, Ви можете скопіювати таблицю або рядки назад у Вашу початкову базу даних, використовуючи INSERT, BCP (Bulk Copy Utility) або SELECT INTO (ця стаття описує лише INSERT, BCP і SELECT INTO). Також Ви можете використовувати DTS, але Microsoft не рекомендує використання DTS.

INSERT

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

BCP

Утиліта BCP використовується, коли потрібно відновити цілу таблицю і якщо розмір цієї таблиці великий.
1. Якщо таблиця не існує, згенеруйте скрипт цієї таблиці, якщо Ви його не маєте, а потім створіть цим скриптом таблицю в джерельній базі.
2. Використовуйте утиліту BCP, щоб скопіювати дані з таблиці (рядки) відновленої бази даних в текстовий файл, а потім з текстового файлу до первісної базу даних. Для отримання додаткової інформації про те, як використовувати утиліту BCP, див тему SQL Server Books Online “bcp Utility”.

ЗВЕРНІТЬ УВАГУ: Якщо Ви використовуєте “minimally logged” або “nonlogged” операції оптового копіювання (bulk copy), зробіть повну резервну копію вашої первинної бази даних після того, як буде завершена робота BCP. Для додаткової інформації, див тему в SQL Server 2000 Books Online “Logged and Minimally Logged Bulk Copy Operations”, або тему в SQL Server 7.0 Books Online “Logged and Nonlogged Bulk Copy Operations”.

SELECT INTO

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

ЗВЕРНІТЬ УВАГУ:
· SQL Server 7.0: У Вашої початкової бази даних повинна бути включена опція “select into / bulkcopy”. Крім того, Ви повинні зробити повну резервну копію бази даних після того, як завершиться виконання SELECT INTO. Для отримання додаткової інформації про SELECT INTO, див тему SQL Server Books Online “SELECT (Transact-SQL)”, розділ “INTO
Clause”.
· SQL Server 2000: У SQL Server 2000 не потрібно встановлювати спеціальну опцію select into / bulkcopy. Кількість реєстрованих операцій і необхідність виконання повного резервного копіювання первісної бази даних після SELECT INTO, залежить від встановленої для цієї бази моделі відновлення (recovery model). Див тему SQL Server 2000 Books Online “SELECT Clause”, підрозділ “INTO Clause” та “Using Recovery Models”, а також статтю на сайті SQL.RU
Вибір моделі відновлення SQL Server
2000

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

[Зміст]

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

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

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

[Зміст]

DBCC CHECKTABLE

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

[Зміст]

ДОВІДКОВА ІНФОРМАЦІЯ

SQL Server Books Online:

· “Designing a Backup and Restore Strategy”

· “Backing Up and Restoring Databases”
· “Backup/Restore Architecture”

Для додаткової інформації прочитайте наступні статті Microsoft Knowledge Base:

INF: Disaster Recovery Articles for Microsoft SQL Server Q307775

INF: Restore File and Filegroup Backups in SQL Server Q281122

[Зміст]

Схожі статті:


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

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*