Exchange 2016出来好一阵子了,全新安装想必大家都在其他文档里面都见过了,Exchange 2016的架构模式将CAS整合进了MBX角色中,使得安装部署十分的简洁方便,只要做好前期准备,甚至直接NEXT下一步就可以搞定,具体的傻瓜式安装,我在后面的文章中给大家详细展示。

今天给大家带来的是一个问题的拍错,大致环境背景如下:

企业内现在有一台ALL IN ONE的 Exchange 2010的服务器,根据需要,现在想将Exchange 2010升级到2016。这个时候我们第一时间想到的最简单的方式就是在环境内搭建一台 exchange 2016的服务器,与之前的Exchange 2010共存,然后迁移用户邮箱到新服务器,之后卸载老服务器。这种升级办法是微软比较推荐的办法,且升级过程和邮箱迁移过程相对平滑,对用户影响最低。话不多说,我们直接开始。

 

BTW: Exchange 2010和Exchange 2016的共存需求,最关键的一点是Exchange 2010必须升级到SP3,官方文档说的是需要SP3或者更高的汇总补丁,当然我这里的exchange 2010已经是SP3,满足了系统要求的最低要求,当时偷懒,索性我就直接安装2016了。但是悲剧的是我在安装2016的过程中遇到了很多个奇怪的问题,我不确定是不是因为我没有安装最新的汇总11导致的,所以在这里强烈建议大家还是升级到最新的汇总11吧,免得后面出问题。

 

安装Exchange 2010&2016 共存时FederatedEmail丢失_第1张图片

安装Exchange 2016的前期准备过程我这里就不写了,后面的文章会很详细的写到。

今天就直接写报错的问题了。

再检查完了先决条件,并开始正常安装的时候,进行到邮箱角色安装时候,悲剧发生了:

安装Exchange 2010&2016 共存时FederatedEmail丢失_第2张图片

接下来又查看了系统日志:

 

Log Name: Application

Source: MSExchangeSetup

Date: 2/3/2016 6:37:34 PM

Event ID: 1002

Task Category: Microsoft Exchange Setup

Level: Error

Keywords: Classic

User: N/A

Computer: SRCorpWinMail01.ecwise.local

Description:

Exchange Server component Mailbox role: Transport service failed.

Error: Error:

The following error was generated when "$error.Clear();

if ( ($server -eq $null) -and ($RoleIsDatacenter -ne $true) )

{

Update-RmsSharedIdentity -ServerName $RoleNetBIOSName

}

" was run: "Microsoft.Exchange.Data.DataValidationException: Database is mandatory on UserMailbox.

at Microsoft.Exchange.Data.Directory.ADDataSession.Save(ADObject instanceToSave, IEnumerable`1 properties, Boolean bypassValidation)

at Microsoft.Exchange.Management.Deployment.UpdateRmsSharedIdentity.Link()

at Microsoft.Exchange.Management.Deployment.UpdateRmsSharedIdentity.InternalProce***ecord()

at Microsoft.Exchange.Configuration.Tasks.Task.b__b()

at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)".

Event Xml:

1002

2

1

0x80000000000000

1391

Application

SRCorpWinMail01.ecwise.local

Mailbox role: Transport service

Error:

The following error was generated when "$error.Clear();

if ( ($server -eq $null) -and ($RoleIsDatacenter -ne $true) )

{

Update-RmsSharedIdentity -ServerName $RoleNetBIOSName

}

" was run: "Microsoft.Exchange.Data.DataValidationException: Database is mandatory on UserMailbox.

at Microsoft.Exchange.Data.Directory.ADDataSession.Save(ADObject instanceToSave, IEnumerable`1 properties, Boolean bypassValidation)

at Microsoft.Exchange.Management.Deployment.UpdateRmsSharedIdentity.Link()

at Microsoft.Exchange.Management.Deployment.UpdateRmsSharedIdentity.InternalProce***ecord()

at Microsoft.Exchange.Configuration.Tasks.Task.b__b()

at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)".

 

抓住了关键词“Microsoft.Exchange.Data.DataValidationException: Database is mandatory on UserMailbox”

通过查询KB发现,这个问题是由于同盟邮箱丢失所导致的,系统无法写入相应的配置属性。

在下图中的ADSI编辑器中,我们可以很清楚的看到,同盟邮箱为空值,我们立刻想到只能新建一个该邮箱,尝试继续安装步骤

安装Exchange 2010&2016 共存时FederatedEmail丢失_第3张图片

在Exchange 2010的 EPS中,用下列命令来进行创建新的同盟邮箱

New-Mailbox -Arbitration -Name FederatedEmail.4c1f4d8b-8179-4148-93bf-00a95fa1e042 -UserPrincipalName FederatedEmail.4c1f4d8b-8179-4148-93bf-00a95fa1e042@

安装Exchange 2010&2016 共存时FederatedEmail丢失_第4张图片

再次尝试安装程序,顺利通过。

安装Exchange 2010&2016 共存时FederatedEmail丢失_第5张图片

下面把我当时查找的KB给大家列出来,供大家参考一下:

https://social.technet.microsoft.com/Forums/exchange/zh-CN/5af966b5-de5d-4e03-bb20-bb6c8a49255b/installing-mailbox-role-fails-database-is-mandatory-on-usermailbox-property-name-database

https://support.microsoft.com/en-us/kb/978776