电子邮件修复

修复Exchange Server中的1018、1019、1022错误

简介:Exchange Server数据库错误1018、1019和1022是数据库问题的指示器,这些问题阻止了它们的挂载,从而导致这些错误。在本文中,我们分享了一些技巧和方法,通过使用内置的inutilities(如EseUtil和Exchange恢复软件)来识别原因并在不丢失数据的情况下解决错误。

Windows版免费下载
Windows版免费下载

修复文件级别数据库错误1018,1019,1022在Exchange服务器

错误消息1018、1019和1022的主要原因是Exchange数据库文件页面中的损坏。本文主要关注Exchange服务器错误的详细信息;导致这些错误的问题,这三者之间的区别以及如何修复文件级数据库错误。

Exchange服务器内置功能能够识别内置page级损坏,与数据库损坏相关的症状有:

  • 1018年JET_errReadVerifyFailure
  • 1019年JET_errPageNotInitialized
  • 1022年JET_errDiskIO

事实上,对MS Exchange数据库的破坏发生在不同的级别。但是,最常见的损坏可能是:EDB文件的页面损坏,b树结构混乱,EDB文件的索引损坏。如果Exchange数据库受到这些因素中的任何一个的影响,则损坏被分为以下几种:

  1. 页面级别
  2. 应用程序级别
  3. 数据库级

使用Eseutil.exe /K开关确定并修复数据库的Page-Level完整性。类似地,应用程序和数据库级别的损坏是由于b树结构中的问题造成的。EDB文件的表或索引在逻辑损坏下分类。请看下图:

Eye-Fi WiFi SD卡

图1:说明了错误1018,1019,1022的原因和级别

虽然主要目标是解决错误,但有必要了解这些错误背后的原因以及EDB文件中页面的组织。从逻辑上讲,一个EDB文件由一组4KB(其中一组4KB表示4的倍数)组成,并以连续的方式编号。可扩展存储引擎(Extensible Storage Engine, ESE)将所有信息存储在EDB文件中,并进一步以B-Tree和B+ Tree结构进行组织。B-Tree结构由指向下一个相邻页或上一页的页组成。事实上,由于快速遍历树,用户可以获得即时搜索结果,尽管它是一个存储大量信息的仓库。即时搜索结果归属于3个层次的b -树,即根、内部和叶。这意味着,对于具有50GB文件的数据页,属性只能读取4或5个磁盘中的数据。然而,EDB文件的表格、图表、索引和其他结构也是B+树的组成部分,而Exchange Store (ESE)是多个B+树的集合。

Eye-Fi WiFi SD卡

图2:说明了b -树基础结构的级别

如上图所示,在B+树中,数据在底层或叶节点上可用,ESE树的上面两层由结构信息组成。如果一个叶节点被破坏,那么数据破坏不会很大。相反,如果树中的结构页被损坏,那么该结构中可用的整个表数据就会丢失。应用Eseutil/P或/D选项可能无法修复节点中可用的数据,但是可以使用ISINTEG实用程序检查数据的完整性。

EDB文件也是按页划分的。前两个页面是Database Header的一部分,数据库的第三个物理页面是它的逻辑页面。在这里,页码和页面的校验和值同样重要。当我们将ESE数据库写入磁盘时,在页面上执行一个数学计算,这个计算被称为校验和。校验和值被写入报头。当ESE读取页面时,例如在在线备份期间或当用户执行标准函数时,它会计算Checksum值并与Header匹配。如果校验和值不匹配,则表示page级存在损坏。

有些页面没有计算校验和,EDB将它们标记为“未初始化的页面”。创建未初始化的页是为了为更多数据扩展空间,由于它们不包含任何数据,因此这些页的校验和和页码值为零。然而,一旦未初始化的页面填满了数据,它就会转换为初始化状态,即使没有数据也不能恢复到未初始化状态。原因是EDB设置了一个标志,提醒页面为校验和和页码。

现在我们已经大致了解了Exchange数据库的结构,让我们来检查错误及其解决方法。

  • 1018 JET_errReadVerifyFailure原因
  • 当用户对Exchange数据库执行操作时,以下原因之一会导致Exchange服务器错误- 1018:

  • 报头的校验和值与重新计算的值不匹配
  • 写入硬盘的数据损坏或写入未分配的位置
  • NTFS文件系统的问题
  • 有时,Exchange Server也会对Exchange Server错误-1018负责:

  • 识别错误的校验和
  • 创建正确的校验和,但应用在不合适的位置
  • 1019 JET_errPageNotInitialized的原因
  • ESE尝试访问它认为有数据的页面。在这种情况下,数据库的上一页链接到下一页,并指示存在有效数据。此错误是在数据库文件大小增加时引起的,新的页面被初始化,其中充满了0。如果现有页面指向这些新页面,那么问题出在ESE数据库引擎上。

    Exchange服务器错误-1019的第二大主要原因是文件系统问题。文件系统将数据映射到不属于数据库的数据库文件中。由于几天、几周或几个月都没有报告错误,因此很难跟踪和解决。

  • 1022 JET_errDiskIO的原因
  • 这是三个错误中最严重的一个。作为一个通用错误,它会在数据库中产生一个问题。ESE尝试从数据库中不存在但有指向该页的指针的页中读取。该错误是由以下情况引起的:

  1. 任何第三方实用程序截断数据库
  2. 基于文件的杀毒软件删除或阻止部分文件
  3. 用户已拒绝本地系统帐户打开filePoint的权限—注意,正常的在线备份将停止,因为Exchange Server错误-1022将阻止它继续进行。

解决方案解决Exchange服务器错误1018,1019,1022:

1.使用在线备份恢复

当一个页面出现Exchange Server Errors 1018错误时,它将呈现为不可读,如果具有指向其他页面的指针的页面已损坏,备份进程将停止。由于备份在此时终止,因此它没有任何损坏。然后可以使用可靠的备份介质恢复备份。

如果备份不是最新的(如果晚些时候检测到错误),那么Exchange数据库最终可能会丢失关键数据。如果可以使用Eseutil命令修复数据库,这是可以避免的。

由于数据库的严重损坏,数据库在遇到Exchange服务器错误- 1022后不容易修复。恢复方法也不是一个可行的选择,因为数据库备份可能不是当前的,并且在备份恢复后会导致数据库丢失。

2.使用Eseutil /p Switch修复数据库

在这种情况下,使用语法解决错误:

Eseutil / p

C:\program files\exchsrvr\bin>Eseutil/p "C:\program files\exchsrvr\mdbdata\priv1.edb

语法,用于在修复后检查报头中的修复计数

Eseutil / mh

C:\program files\exchsrvr\bin>Eseutil/mh "C:\program files\exchsrvr\mdbdata\priv1.edb

在这种情况下,逻辑数据库中的损坏页面将被删除,但一个重要的缺点是Eseutil命令将在数据库中的损坏页面中创建空白空间,从而导致数据库丢失。

3.使用Eseutil/d交换机离线整理Exchange数据库碎片

在Eseutil/D的帮助下,使用数据库的离线碎片整理来扭转这种情况。使用以下语法:

Eseutil / d

C:\programfiles\exchsrvr\ bin>Eseutil/d "C:\programfiles\exchsrvr\mdbdata\priv1.edb

对修复后的数据库执行离线碎片整理的缺点是:

  1. Eseutil不会修复EDB文件中的损坏,而是只从Exchange数据库中删除空白。
  2. 由于Eseutil删除了数据库的空白,页面的逻辑和物理编号彼此不匹配。

4.使用Isinteg修复数据库

Isinteg有助于纠正和同步数据库的逻辑和物理页面。

C:\program files\exchsrvr\bin>isinteg -s servername -fix -tests alltests

使用Isinteg语法的缺点是,它可能工作,也可能不工作,如果差异很大,则数据库修复的机会将进一步降低。

5.使用Exchange恢复软件

修复Exchange数据库的最可靠的软件之一是恒星维修交换修复Exchange数据库并确保没有数据丢失的软件。只需执行搜索(Search) \扫描(Scan) \保存EDB文件(Save EDB file)三个主要步骤,就可以得到想要的结果。

免费下载

结论

虽然Exchange管理员是使用Eseutil交换机和Isinteg解决错误的专家,但仍然存在像Exchange服务器错误- 1018,1019,1022这样的错误,这些错误会导致Exchange数据库在修复和碎片整理过程后丢失。更好的选择是使用Exchange恢复工具,如Stellar Repair for Exchange。该软件修复EDB文件并将其导出为PST。此外,它还将修复后的EDB直接导出到Office 365或Live Exchange服务器,并有助于减少Exchange停机时间。

进步
76% 的人认为这篇文章有帮助