По материалам статьи Microsoft: HOW
TO: Retrieve a Table or Rows from Database or Transaction Log
Backups
Эта статья описывает способы восстановления таблиц или строк в базе данных из резервной копи журнала регистрации транзакций (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. У Вас получиться копия базы данных,
которая содержит требуемые к восстановлению данные. Вы можете
восстанавливать копию на тот же самый сервер или на другой сервер. Для дополнительной информации прочтите статью 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 используется, когда нужно восстановить целую таблицу и если
размер этой таблицы большой. ОБРАТИТЕ ВНИМАНИЕ: Если Вы используете "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 сам её создаст и скопирует данные в новую таблицу. ОБРАТИТЕ ВНИМАНИЕ: ОБРАТИТЕ ВНИМАНИЕ: Поскольку Вы восстанавливаете данные, которые могут быть не совместимы с текущим состоянием базы данных, ссылочная целостность может быть нарушена. При попытке копирования данные назад, в первоначальную базу данных, могут проявиться ограничения и ошибки ключей. Вы должны предпринять соответствующие меры, чтобы избежать возможных проблем ссылочной целостности. Пересоздание индексов, триггеров и ограничений Вы должны пересоздать все обычные и полнотекстовые индексы, триггеры и ограничения, если ваша первоначальная таблица была утеряна. ВАЖНО: Поскольку Вы восстанавливаете данные, который были актуальны для другого времени, чем у текущей базы данных, ссылочная целостность может быть нарушена. Вы должны предпринять соответствующие меры, чтобы избежать возможных проблем ссылочной целостности. Выполните DBCC CHECKTABLE для новой таблицы, чтобы проверить целостность данных. Для дополнительной информации, см. тему SQL Server Books Online "DBCC CHECKTABLE".
SQL Server Books Online: Для дополнительной информации прочтите следующие статьи Microsoft
Knowledge Base: |