SAN出现问题后,SQL数据库被标记为可疑。由于不一致的程度,恢复是从一个有效的备份&日志备份。没有其他系统或其他用户数据库出现问题,CHECKDB成功。恢复的数据库也有一个成功的CHECKDB,并且应用程序已重新启用。
但是,问题数据库的日常备份一直失败。CHECKDB继续成功,没有出现任何错误。完整、仅复制备份会产生相同的错误(也尝试过continue_after_error)
Msg 3203, Level 16, State 1, Line 3
Read on "mydb.mdf" failed:
23(failed to retrieve text for this error. Reason 15105)
Msg 3203, Level 16, State 1, Line 3
BACKUP DATABASE is terminating abnormally.
我还在系统事件日志中看到
设备\device\Harddisk2\DR2有一个坏块
服务器本身已重新启动,SQL server恢复联机,没有出现任何错误。CHECKDB继续报告任何数据库都没有错误,但由于一周多以来没有有效的备份,情况正在恶化。
其他论坛认为,此错误可能是由于文件访问/权限或没有足够的磁盘空间来完成备份,但事实并非如此,因为尝试使用不同的凭据备份到多个不同的位置,结果相同。
我正在制定一个流程来导出所有DB对象,并将所有数据大容量复制到一个干净的数据库中。我考虑过的另一个选项是分离/停止sql并将mdf、ndf、ldf文件复制到另一台服务器,但目前不愿意在不首先保护数据的情况下停止sql server。
欢迎任何想法,我可能能够在DB在线时进行进一步检查,以确定坏块可能与什么有关。
屏幕截图1-显示运行备份可获得70%的通过率。1
只是说我们已经得出结论,mdf文件无法修复。再次分享场景
带有mdf文件中的坏扇区
- T-Log备份成功
- 数据库仍然可以访问/运行
- 和CHECKDB看起来不错
然而*完整&差异备份失败*分离数据库时无法复制MDF文件*数据库仍然可以在原位重新连接
由于一些糟糕的文件管理&整个问题的延迟识别
- 日志链已断开(由于日志备份保留期有限)
- 唯一的解决方案是恢复旧备份和痛苦的数据拷贝