Bra*_*adC 8 sql-server-2008 sql-server recovery standby
如果“备用文件”丢失,有没有办法从备用/只读模式恢复 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.
Run Code Online (Sandbox Code Playgroud)
恢复是前一段时间完成的,不幸的是备用文件在备份文件夹中,并被我们的文件夹清理程序删除了。任何其他媒体上都不存在该文件的副本。用于恢复到这一点的原始备份也早已不复存在。
幸运的是,这对我们来说没什么大不了的(这是一个临时恢复),但是除了“不要删除该文件”之外,我找不到关于这个问题的任何其他有用的参考资料。
如果归根结底,我想我可以编写整个数据库的脚本,或者使用 SSIS 将所有对象复制到新的数据库容器中,因为我面前有一个 db 的只读副本。
有什么办法可以解决这个问题?我当然不希望我能够将它翻转回“恢复”并继续进行后续的恢复或任何事情,我只想在当前状态下将其强制进入正常的在线模式,以便我可以做到诸如更改权限、更改恢复模式或进行新的完整备份之类的事情。
事实证明,如果您使用 CONTINUE_AFTER_ERROR 就可以完成
RESTORE DATABASE foo WITH RECOVERY, CONTINUE_AFTER_ERROR
Run Code Online (Sandbox Code Playgroud)
我在尝试时仍然收到警告,但随后进行了 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.
Run Code Online (Sandbox Code Playgroud)
鉴于警告,我不能 100% 确定我是否会在没有良好备份的生产数据库上尝试它。鉴于这是一个临时恢复,它可能值得一试。
| 归档时间: |
|
| 查看次数: |
4394 次 |
| 最近记录: |