sql server恢复挂起原因 sql server数据库恢复挂起的解决办法



文章插图
sql server恢复挂起原因 sql server数据库恢复挂起的解决办法

文章插图
SQL Server是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统 , 实现了与WindowsNT的有机结合 , 提供了基于事务的企业级信息管理系统方案 。本次需要进行数据恢复的服务器是一台r520型号存储 , 共有7块SAS硬盘分别组成RAID1和RAID5两组磁盘阵列 。
主要SQL Server数据库存放在C盘中 , 在使用过程中 , 客户发现C盘容量即将占满 , 于是将数据库路径指向了D盘 , 在D盘生成了一个.ndf文件 。
客户在继续使用了大约10天之后 , 数据库出现故障 , 连接失效 , 无法正常附加查询 。在遇到这种情况是应该如何进行正确操作呢?
【备份数据】
考虑到数据的安全性以及可还原性 , 在做数据恢复之前需要对所有源数据做备份 , 以防万一其他原因导致数据无法再次恢复 。使用dd命令或winhex工具将所有磁盘都镜像成文件 。
【故障分析】
首先分析故障原因:由于数据库文件所在磁盘容量不足 , 导致数据库无法继续正常运行 , 出现逻辑错误;
再分析RAID组结构:客户服务器上共7块300G硬盘 , 其中2块硬盘做RAID 1 , 用于安装操作系统 , 其余5块硬盘做RAID 5存放数据 。分析RAID 1和RAID 5的相关结构 , 重组虚拟出RAID 1和RAID 5 , 查看其中数据 。
再分析原始数据库文件:由于客户在数据库发生故障之后 , 进行过多次数据库恢复尝试 , 并且每一次尝试都是在源环境下进行的 , 导致原始数据库文件被更改覆盖 , 并且磁盘空间被多次复写 , 无法使用尝试恢复之后的数据库文件进行修复 。询问客户得知 , 客户在数据库发生故障的时候 , 备份过一分原始的故障数据库文件 。
【数据库修复】
从虚拟出的RAID 5空间中将客户之前备份的数据库文件拷贝出来 , 尝试在数据库中附加 , 附加失败 。错误提示主数据库文件和次级数据库文件不匹配 , 查看.ndf文件底层 , 发现.ndf文件中几乎没有数据 , 尝试取消.mdf文件和.ndf文件之间关联 , 只用.mdf文件进行附加 。
尝试后发现 , 只用.mdf文件附加时也发生错误 , 但是错误提示改变 。
此时错误提示日志文件(.ldf)和数据库文件(.mdf)不匹配 。之后对数据库尝试进行无数据库附加 , 附加成功 。但是发现数据库系统表损坏 , 无法正常使用 。对数据库的系统表尝试修复 , 但由于系统表损坏过于严重 , 无法修复 。
【数据库记录提取】
解析数据库文件中的数据库记录 , 编写相应的程序提取数据库文件中的数据库记录 。根据客户以前的数据库备份获取数据库中的表结构 , 重构表结构并肩提取出的数据库记录导入到新的表中 , 进行数据验证 , 如数据没有问题 , 即本次数据恢复成功 。
【北亚数据恢复小贴士】
【sql server恢复挂起原因 sql server数据库恢复挂起的解决办法】在数据库使用过程中 , 要合理分配数据库文件所在的磁盘空间 , 及时清理垃圾数据 , 保证数据库的正常及安全运行 , 如遇到故障情况时 , 当不知道如何正确操作时 , 请及时联系相关专业数据恢复工程师进行数据恢复操作 。