Можно ли восстановить базу данных SQL из режима ожидания / только для чтения без резервного файла?

8

Есть ли способ восстановить базу данных SQL из режима ожидания / только для чтения, если отсутствует «резервный файл»?

(Я вижу некоторые ссылки, называющие этот файл TUF в сценарии доставки журналов, но в моем случае это было просто ручное восстановление, а резервный файл имел расширение BAK.)

Выполнение команды «RESTORE DATABASE foo WITH RECOVERY» приводит к фатальной ошибке:

During startup of warm standby database 'foo', its standby file
('path\filename.bak') was inaccessible to the RESTORE statement.
The operating system error was '5(Access is denied.)'. Diagnose the
operating system error, correct the problem, and retry startup.

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

К счастью, для нас это не имеет большого значения (это было временное восстановление), но я не смог найти других полезных ссылок по этому вопросу, кроме «не удалять этот файл».

Если дело дошло до этого, я полагаю, что могу написать сценарий для всей базы данных или использовать SSIS для копирования всех объектов в новый контейнер базы данных, так как передо мной находится копия db только для чтения.

Есть ли способ решить эту проблему? Я, конечно, не ожидаю, что смогу вернуться к «восстановлению» и продолжить делать последующее восстановление или что-нибудь еще, я просто хотел бы перевести его в обычный онлайн-режим в его текущем состоянии, чтобы я мог сделать такие вещи, как изменение разрешений, или изменение режима восстановления, или создание новой полной резервной копии или что-то в этом роде.

BradC
источник

Ответы:

7

Оказывается, это можно сделать, если вы используете CONTINUE_AFTER_ERROR

RESTORE DATABASE foo WITH RECOVERY, CONTINUE_AFTER_ERROR

Я все еще получал предупреждение, когда пытался это сделать, но затем сделал CHECKDB и не получил ошибок.

RESTORE WITH CONTINUE_AFTER_ERROR was successful but some damage was encountered. Inconsistencies in the database are possible.
RESTORE DATABASE successfully processed 0 pages in 4.180 seconds (0.000 MB/sec).
Msg 3441, Level 17, State 1, Line 13
During startup of warm standby database 'foo' (database ID 46), its standby file ('C:\MSSQL\Backup\foo_standby') was inaccessible to the RESTORE statement. The operating system error was '2(The system cannot find the file specified.)'. Diagnose the operating system error, correct the problem, and retry startup.

Учитывая предупреждение, я не уверен на 100%, попробую ли я его на производственной базе данных, где у меня не было хорошей резервной копии. Учитывая, что это временное восстановление, возможно, стоит попробовать.

Кеннет Фишер
источник