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 2016的前期准备过程我这里就不写了,后面的文章会很详细的写到。
今天就直接写报错的问题了。
再检查完了先决条件,并开始正常安装的时候,进行到邮箱角色安装时候,悲剧发生了:
接下来又查看了系统日志:
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.InternalProcessRecord()
at Microsoft.Exchange.Configuration.Tasks.Task.<ProcessRecord>b__b()
at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)".
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="MSExchangeSetup" />
<EventID Qualifiers="0">1002</EventID>
<Level>2</Level>
<Task>1</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2016-02-04T02:37:34.000000000Z" />
<EventRecordID>1391</EventRecordID>
<Channel>Application</Channel>
<Computer>SRCorpWinMail01.ecwise.local</Computer>
<Security />
</System>
<EventData>
<Data>Mailbox role: Transport service</Data>
<Data>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.InternalProcessRecord()
at Microsoft.Exchange.Configuration.Tasks.Task.<ProcessRecord>b__b()
at Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)".
</Data>
</EventData>
</Event>
抓住了关键词“Microsoft.Exchange.Data.DataValidationException: Database is mandatory on UserMailbox”
通过查询KB发现,这个问题是由于同盟邮箱丢失所导致的,系统无法写入相应的配置属性。
在下图中的ADSI编辑器中,我们可以很清楚的看到,同盟邮箱为空值,我们立刻想到只能新建一个该邮箱,尝试继续安装步骤
在Exchange 2010的 EPS中,用下列命令来进行创建新的同盟邮箱
New-Mailbox -Arbitration -Name FederatedEmail.4c1f4d8b-8179-4148-93bf-00a95fa1e042 -UserPrincipalName FederatedEmail.4c1f4d8b-8179-4148-93bf-00a95fa1e042@<Default_Accepted_Domain>
再次尝试安装程序,顺利通过。
下面把我当时查找的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