在一次恢复操作结束后,Exchange会检查在服务器上是否存在事务日志。如果事务日志存在的话,它们会帮助刚恢复的数据库更新的最近的状态。Exchange会将存储在数据库中的对象的更新序列号(USN)和其他服务器上的USN进行对比,如果服务器上的USN状态比刚恢复的数据库的USN状态更新的话,那么数据库会根据较新的USN进行自动更新。这样一系列的操作最终导致的结果就是,刚被恢复的数据库的状态和它崩溃之前的完好状态基本上是一致的。
这是一项隐藏在恢复过程背后的神奇技术,我很感谢微软为开发这项技术所做出的努力。但是,白璧微瑕,在有些情况下,Exchange恢复数据的方法也许会和你的想法背道而驰。
我刚才所描述的恢复过程是在假设服务器无法工作的情况下进行的,但是很多时候我们遇到的情况并不是这样。举个例子,如果你的公司的邮件系统管理员是一个刚来的毛头小子,他不小心删除了一千个邮箱,所以你不得不对系统进行恢复,但你这么做的原因却并不是因为服务器无法工作。
假设你在昨天晚上创建了一个系统备份。在今天早上,你的毛头管理员突然删除了一千个邮箱。是的,你可以恢复昨天晚上的备份,但是这里有一个问题:删除操作拥有的USN比你昨天晚上备份的数据的USN要新。也就是说,当你恢复了昨天晚上的备份之后,是的,邮箱是恢复了,但是很快又会被删除,因为Exchange会认为只有删除了这些邮箱才能保证数据库能恢复到最新状态。
为了解决这个问题,微软发布了一个叫做AUTHREST.EXE的工具。这个工具能够让你对Exchange数据库执行可靠的恢复操作,它可以修改欲恢复数据库的USN,以此保证它们比其他任何一台Exchange服务器的USN都要新。通过这种方法,你的恢复操作会覆盖服务器上的任何东西,也就是说你可以恢复那一千个邮箱而再也不用担心它们会被自动删除了。
很明显,AUTHREST.EXE是一个有用的工具,你应该把它常备在手边,但是也有一些地方需要注意:由于AUTHREST.EXE会更新一个服务器上所有的USN信息,所以那些你在最近一次备份之后所进行的一些有用的更改操作也会因为这个原因而无法恢复。
那么我们怎样决定在什么时候该使用AUTHREST.EXE,什么时候不该使用它呢?如果是我刚才描述的例子那种状况,有一千个邮箱被删除了,那么我会毫不犹豫的使用这个工具,除非我有一个非常新的备份。反之,如果你最近的备份都是几天前所做的,或者你只需要恢复几个邮箱,你就应该选择使用普通的恢复方式。
如果遇到这种情况,我推荐你使用Exchange 2003的恢复存储组功能。通过这个功能,你可以将你的备份恢复成一个恢复存储组,而不是完全覆盖现有的数据库。然后你可以将那些被删除的邮箱从恢复存储组中移动到信息存储器中。这个方法也许比使用恢复程序稍微复杂一些,但是却有效得多。