Exchange记解决一例邮箱数据库修复(ESEUTIL)

一位网友误删除了邮箱数据库的日志文件导致报错且邮箱数据库无法挂载。

报错:

1.png

2.png



解决办法:

一、使用数据恢复软件找到了误删除的日志文件并恢复后报以下错误:

《Morning 2018/06/04 10:20:40
Information Store - Mailbox Database B (50196) Mailbox Database B: 由于遇到对现已不存在的数据库“E:\Database\Mailbox Database B.edb”的引用,数据库恢复失败,出现错误 -1216。在删除(也可能是移动或重命名)数据库之前,数据库不会处于“干净关闭”状态。对于此实例,在重新设置好丢失的数据库之前,数据库引擎不会允许恢复过程完成。如果该数据库确实不再可用并且不再需要,请参考 Microsoft 知识库中提供的解决该错误的步骤,或者单击此消息底部的“详细信息”链接。》


 注意:下文提到的isinteg命令并不一定适用于高版本的EXCHANGE,也不是修复所必须的一个命令。

TIPS: Isinteg 是一种实用工具,可搜索脱机信息存储区以查找完整性方面的缺陷。还可以修复 Isinteg 检测到的问题。Isinteg 在命令提示符处运行。


二、此时考虑使用eseutil命令进行修复

                                执行ESEUTIL /MH <数据库绝对路径>,查看state是 dirtyshutdown还是cleanshutdown.


1.如果是clean shutdown状态可以执行软修复

   注意:软恢复过程的一个基本假设是故障未移动、删除或破坏任何数据库文件或日志文件,管理员在故障之后也没有这样做。

   运行一遍exeutil /r,然后使用isinteg.exe修复Pub1和Priv1数据库  isinteg -s (servername) -fix -test alltests   ,重新启动信息存储服务,挂载数据库.


2.如果是dirtyshutdown状态需要执行硬修复。(更多的是这个状态)


   2.1  eseutil /r

       即使运行硬修复也建议首先使用eseutil /r命令试图修复下逻辑错误。


   2.2  eseutil /mh

        然后再次执行eseutil /mh <数据库句对路径>,进行状态的检查


   2.3  eseutil /p

        把数据库文件夹中所有的log、chk、temp.edb文件剪切到别的文件夹    然后执行 eseutil /p <数据库绝对路径>  命令直至修复完成。

{注意:也可直接进行ESEUTIL /P 修复,当尝试无法挂载时再移除log、chk、temp.edb文件}


   2.4  eseutil /d

         执行eseutil /d <数据库绝对路径>进行碎片整理,如果不进行碎片整理可能导致数据库出现索引和空间分配错误。(生产环境建议执行,也可跳过)


   2.5  isinteg-s(servername)-fix-testalltests (可跳过)

         此时应该能够正常挂载数据库了。为了在应用程序级别修复数据库执行上述命令,执行此命令数据库必须是离线状态,所有如果挂载了请卸除数据库。

sinteg 完成之后,应当报告数据库中有零个错误。如果错误计数大于零,请再次运行 Isinteg 直到计数变为零,或在后续运行中计数不再减少。如果无法让错误计数归零,挂在后建议进行数据库的迁移。


三、修复完毕,挂载数据库、重启信息存储服务。

  



    

猜你喜欢

转载自blog.51cto.com/seawind/2124615