Невозможно восстановить базу данных SQL Server из полной резервной копии, ошибка обработки журнала, база данных в состоянии «восстановления»

14

Я пытаюсь настроить базу данных для целей разработки на локальном компьютере SQL Server Developer Edition 12.0.2000.8. У меня есть полная резервная копия базы данных и отдельные файлы резервных копий только для журнала транзакций, которые были отправлены мне по сети.

При попытке восстановить из полной резервной копии, через некоторое время (возможно, ~ 1 час, размер базы данных ~ 270 ГБ), я получаю сообщение об ошибке:

System.Data.SqlClient.SqlError: Произошла ошибка при обработке журнала для базы данных «имя базы данных». Если возможно, восстановите из резервной копии. Если резервная копия недоступна, может потребоваться перестроить журнал. (Microsoft.SqlServer.SmoExtended)

После этого БД находится в состоянии «Восстановление ..».

Я хотел запустить что-то вроде (получил из этого вопроса)

ALTER DATABASE recovery_test_2 SET EMERGENCY;
ALTER DATABASE recovery_test_2 SET SINGLE_USER;

DBCC CHECKDB (recovery_test_2, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;

против этого, но, естественно, я не могу, так как база данных находится в состоянии «Восстановление ...». Перезапуск процесса восстановления на нем приводит к тому же сообщению об ошибке, удаление и восстановление снова не помогли.

Как мне получить БД и работать? Согласованность транзакций не имеет значения для меня.

Сгенерированный сценарий восстановления SSMS:

  USE [master]
  RESTORE DATABASE [database_name] FROM  DISK = N'D:\database_name.bak' WITH  FILE = 1,
  MOVE N'database_name' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name.mdf',
  MOVE N'database_name_index' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_index.ndf',
  MOVE N'database_name_log' TO N'D:\MSSQL\MSSQL12.MSSQLSERVER\MSSQL\DATA\database_name_log.ldf',
  NOUNLOAD,
  STATS = 5

  GO

Результат запроса, предложенного @Craig Efrein

Журнал не может быть восстановлен, потому что были открытые транзакции / пользователи, когда база данных была закрыта, контрольная точка не обнаружена в базе данных или база данных была доступна только для чтения. Эта ошибка может возникнуть, если файл журнала транзакций был удален или потерян вручную из-за сбоя оборудования или среды.

evictednoise
источник
Комментарии не для расширенного обсуждения; этот разговор был перенесен в чат .
Пол Уайт 9

Ответы:

2

Из комментариев, перенесенных в чат, эта заметка от ОП:

Я просто попытался подключить его через графический интерфейс. Когда я выбрал файл .mdf, SSMS определила, что база данных состоит из 3 файлов (данные, индекс, журнал), но каким-то образом, даже когда я восстанавливал WITH MOVE, детали базы данных о пути к файлу говорили неправильно! Поэтому я просто указал им на старый файл журнала / данных / индекса и ... База данных в сети.

RDFozz
источник
-3

Перейдите в однопользовательский режим и восстановите.

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

RESTORE DATABASE AdventureWorks FROM DISK = 'C:\AdventureWorks.BAK'
WITH NORECOVERY
GO
RESTORE LOG AdventureWorks FROM DISK = 'C:\AdventureWorks.TRN'
WITH RECOVERY
GO
Мэдди
источник
1
Вопрос касается одного оператора RESTORE DATABASE, отдельное восстановление журнала транзакций не выполняется. Вероятно, исходная база данных и / или файл резервной копии повреждены.
Брайан