Назад | Перейти на главную страницу

Проблемы с восстановлением большой базы данных SQL Server 2005

У меня есть клиент с гигантской базой данных SQL Server 2005 (почти 400 ГБ, включая файл журнала), и таблица была случайно удалена. Мы пытаемся восстановить временную базу данных, затем мы скопируем данные из отсутствующей таблицы.

На диске было около 450 ГБ свободного места. Как только я начал восстановление, SQL выделил 400 ГБ для новой временной базы данных, оставив 50 ГБ свободными. После этого восстановление продолжалось без ошибок около 23 часов. В какой-то момент ближе к концу (я не знаю, когда) произошел сбой с ошибкой в ​​строке «ошибка не найдена», что, как я полагаю, связано с дисковым пространством, потому что на диске было свободно только 8 ГБ из-за создания другого файла. в это время.

База данных теперь находится в состоянии «Восстановление ...».

Думаю, я могу удалить эту базу данных и начать все сначала, но мой клиент прыгает вверх и вниз, потому что у него нет базы данных и он не может ждать еще 23 часа - и даже тогда он снова будет работать !?

У меня вопрос: могу ли я вывести базу данных из состояния «Восстановление ...» хотя бы просто для того, чтобы посмотреть, есть ли в ней нужные мне данные, поскольку мне нужны данные только из одной из таблиц. Я уже пробовал:

RESTORE DATABASE xxx WITH RECOVERY

Но это вернулось с ошибкой

Msg 4333, Level 16, State 1, Line 1
The database cannot be recovered because the log was not restored.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.

Любая помощь очень ценится.

Если вам нужно восстановить таблицу с ее данными из файла резервной копии, вы можете попробовать

  1. Сравнение схем Devart для SQL Server восстановить саму структуру таблицы

  2. Сравнение данных Devart для SQL Server для копирования строк таблицы.

НЕ ОБЯЗАТЕЛЬНО ВОССТАНОВЛЕНИЕ базы данных из файла резервной копии - эти продукты напрямую считывают базы данных из файлов резервных копий.

В качестве альтернативы вы можете попробовать Виртуальное восстановление SQL от Red Gate прикрепить файл резервной копии к SQL Server как настоящую базу данных без ее восстановления!

Освободите дополнительное дисковое пространство на сервере и попробуйте:

RESTORE DATABASE xxx FROM DISK = 'zzz' WITH RESTART

Это должно попытаться начать восстановление с точки сбоя и может привести к полному восстановлению, если на диске достаточно места.

При восстановлении базы данных SQL Server сначала создает и выделяет пространство для файла данных, что включает запись пустых страниц на диск для этого файла, чтобы занять пространство (файл создается «разреженным», а затем заполняется). После выделения пространство таким же образом выделяется для файла журнала. Только после завершения обеих этих операций сервер начинает восстанавливать данные в эти файлы. Для очень больших баз данных это может занять значительное время - в пользовательском интерфейсе Management Studio восстановление будет показывать 0% завершения до тех пор, пока этот процесс не будет завершен и не будут восстановлены первые данные.

Похоже, что не удалось выделить место для файла журнала, и восстановление было прервано. Обычно это приводит к удалению с диска как файлов журнала, так и файлов данных, а также освобождения пространства - стоит посмотреть в файлах системного журнала, чтобы узнать, можете ли вы определить, почему восстановление не прервалось обычным образом.