Я пытаюсь настроить базу данных для целей разработки на локальном компьютере 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
Журнал не может быть восстановлен, потому что были открытые транзакции / пользователи, когда база данных была закрыта, контрольная точка не обнаружена в базе данных или база данных была доступна только для чтения. Эта ошибка может возникнуть, если файл журнала транзакций был удален или потерян вручную из-за сбоя оборудования или среды.
источник
Ответы:
Из комментариев, перенесенных в чат, эта заметка от ОП:
Я просто попытался подключить его через графический интерфейс. Когда я выбрал файл .mdf, SSMS определила, что база данных состоит из 3 файлов (данные, индекс, журнал), но каким-то образом, даже когда я восстанавливал WITH MOVE, детали базы данных о пути к файлу говорили неправильно! Поэтому я просто указал им на старый файл журнала / данных / индекса и ... База данных в сети.
источник
Перейдите в однопользовательский режим и восстановите.
пример:
первое восстановление использует опцию NORECOVERY, чтобы можно было выполнить дополнительное восстановление. Вторая команда восстанавливает журнал транзакций, а затем переводит базу данных в оперативный режим для использования конечным пользователем.
источник