问题描述:
因人员递增及业务发展需要, 需要对现阶段 Exchange 前后端及数据库进行全新规划, 并根据实际需要扩容现有数据库在挂载数据库时发生报错 MapiExceptionTooManyMountedDatabases: Unable to mount database
环境描述:
Windows Server 2012R2 + Exchange CU17
问题分析:
Microsoft Exchange Server 2013 在两个服务器版本中可用: 标准版和企业版企业版可以在发布到制造 (RTM) 和累积更新 1(CU1)版本中扩展到每个服务器 50 个装载数据库, 累积更新 2(CU2)和更高版本 CU18 中每个服务器装载 100 个数据库; 标准版仅限于每台服务器安装 5 个数据库挂载的数据库是正在使用的数据库挂载的数据库可以是安装为供客户端使用的活动邮箱数据库, 也可以是安装在恢复中的用于日志复制和重放的被动邮箱数据库虽然可以创建比上述限制更多的数据库, 但只能装载上面指定的最大数目恢复数据库不计入此限制
这些许可版本由产品密钥定义输入有效的许可证产品密钥时, 会建立服务器的受支持版本产品密钥只能用于相同版本的密钥交换和升级; 他们不能用于降级您可以使用有效的产品密钥将 Exchange 2013 的评估版 (试用版) 移至标准版或企业版您也可以使用有效的产品密钥从标准版转移到企业版
您也可以使用相同版本的产品密钥重新授权服务器例如, 如果您有两台带有两个密钥的 Standard Edition 服务器, 但意外在两台服务器上使用了同一个密钥, 则可以将其中一个密钥更改为您发布的另一个密钥您可以执行这些操作, 而无需重新安装或重新配置任何内容输入产品密钥并重新启动 Microsoft Exchange Information Store 服务后, 将反映与该产品密钥对应的版本
当试用版过期时, 不会发生功能损失, 因此您可以在 120 天内维护实验室, 演示版, 培训版和其他非生产环境, 而无需重新安装 Exchange 2013 试用版
如前所述, 您不能使用产品密钥从企业版降级到标准版, 也不能使用它们还原到试用版这些类型的降级只能通过卸载 Exchange 2013, 重新安装 Exchange 2013 以及输入正确的产品密钥来完成
解决思路:
1. 在 ECP 网页管理界面执行数据库挂载操作, 报错信息如下:
装入数据库 "DB17" 失败错误: 活动管理器操作失败错误: 数据库操作失败错误: 尝试为可能的激活操作选择数据库副本时发生错误错误: 未装载数据库'DB17', 因为验证数据库副本是否可激活时, 或者试图激活另一个副本时出现了错误详细错误: mbx04: 活动管理器操作失败错误: 操作失败, 出现消息: MapiExceptionTooManyMountedDatabases: Unable to mount database. (hr=0x8004060e, ec=-2147219954) Diagnostic context: Lid: 65256 Lid: 10722 StoreEc: 0x8004060E Lid: 1494 -- Remote Context Beg -- Lid: 37952 dwParam: 0x3C1A048E Lid: 39576 StoreEc: 0x977 Lid: 35200 dwParam: 0x1970 Lid: 58864 StoreEc: 0x8004060E Lid: 43248 StoreEc: 0x8004060E Lid: 35388 StoreEc: 0x8004060E Lid: 54336 dwParam: 0x3C1A048E Lid: 35200 dwParam: 0x1970 Lid: 1750 -- Remote Context End -- Lid: 1047 StoreEc: 0x8004060E [服务器: MBX04.***.com] [数据库: DB17, 服务器: MBX02.***.com]
2. 此时查看服务器日志:
邮箱数据库 DB17 的索引遇到意外异常错误详细信息: Microsoft.Exchange.Search.Core.Abstraction.OperationFailedException: The component operation has failed. ---> Microsoft.Exchange.Search.Core.Abstraction.ComponentFailedPermanentException: Failed to read notifications, MDB: 6fbcc62c-b4ad-45a8-b512-d1daac1090b7. ---> Microsoft.Mapi.MapiExceptionMdbOffline: MapiExceptionMdbOffline: Unable to read events. (hr=0x80004005, ec=1142)
- Diagnostic context:
- Lid: 49384
- Lid: 51176 StoreEc: 0x476
- Lid: 40680 StoreEc: 0x476
- Lid: 43980
- Lid: 16354 StoreEc: 0x476
- Lid: 38985 StoreEc: 0x476
- Lid: 20098
- Lid: 20585 StoreEc: 0x476
在 Microsoft.Mapi.MapiExceptionHelper.InternalThrowIfErrorOrWarning(String message, Int32 hresult, Boolean allowWarnings, Int32 ec, DiagnosticContext diagCtx, Exception innerException)
在 Microsoft.Mapi.MapiExceptionHelper.ThrowIfError(String message, Int32 hresult, IExInterface iUnknown, Exception innerException)
在 Microsoft.Mapi.MapiEventManager.ReadEvents(Int64 startCounter, Int32 eventCountWanted, Int32 eventCountToCheck, Restriction filter, ReadEventsFlags flags, Boolean includeSid, Int64& endCounter)
在 Microsoft.Exchange.Search.Mdb.NotificationsEventSource.<>c__DisplayClass3.<ReadEvents>b__1()
在 Microsoft.Exchange.Search.Mdb.MapiUtil.<>c__DisplayClass1`1.<TranslateMapiExceptionsWithReturnValue>b__0()
在 Microsoft.Exchange.Search.Mdb.MapiUtil.TranslateMapiExceptions(IDiagnostiCSSession tracer, LocalizedString errorString, Action mapiCall)
--- 内部异常堆栈跟踪的结尾 ---
在 Microsoft.Exchange.Search.Mdb.MapiUtil.TranslateMapiExceptions(IDiagnosticsSession tracer, LocalizedString errorString, Action mapiCall)
在 Microsoft.Exchange.Search.Mdb.MapiUtil.TranslateMapiExceptionsWithReturnValue[TReturnValue](IDiagnosticsSession tracer, LocalizedString errorString, Func`1 mapiCall)
在 Microsoft.Exchange.Search.Mdb.NotificationsEventSource.ReadEvents(Int64 startCounter, Int32 eventCountWanted, ReadEventsFlags flags, Int64& endCounter)
在 Microsoft.Exchange.Search.Mdb.NotificationsEventSource.ReadFirstEventCounter()
在 Microsoft.Exchange.Search.Engine.NotificationsEventSourceInfo..ctor(IWatermarkStorage watermarkStorage, INotificationsEventSource eventSource, IDiagnosticsSession diagnosticsSession, MdbInfo mdbInfo)
在 Microsoft.Exchange.Search.Engine.SearchFeedingController.DetermineFeederStateAndStartFeeders()
在 Microsoft.Exchange.Search.Engine.SearchFeedingController.InternalExecutionStart()
在 Microsoft.Exchange.Search.Core.Common.Executable.InternalExecutionStart(Object state)
--- 内部异常堆栈跟踪的结尾 ---
在 Microsoft.Exchange.Search.Core.Common.Executable.EndExecute(IAsyncResult asyncResult)
在 Microsoft.Exchange.Search.Engine.SearchRootController.ExecuteComplete(IAsyncResult asyncResult)
3. 根据报错 MapiExceptionTooManyMountedDatabases 及系统日志分析, 回想我们在添加新的邮箱后端后并未输入生产密钥, 评估版邮箱默认可安装 5 个数据库
Ps. 可通过如下命令查看正在运行的 Exchange 2013 版本的内部版本号:
Get-ExchangeServer | fl name,edition,admindisplayversion
4. 正常录入 Exchange 企业版授权密钥:
5. 重启 Microsoft Exchange Information Store (Microsoft Exchange 信息存储)服务
6. 重新尝试添加数据库, 此时可正常添加本次排错操作完成
补充:
Exchange 2013 许可证类型
Exchange 2013 在服务器 / 客户端访问许可证 (CAL) 模型中获得许可, 与 Exchange 2010 的许可方式类似以下是许可证的类型:
服务器许可证: 必须为正在运行的服务器软件的每个实例分配许可证服务器许可证以两种服务器版本销售: 标准版和企业版
客户端访问许可证 (CAL):Exchange 2013 还包含两个客户端访问许可证(CAL) 版本, 这两个版本称为标准 CAL 和企业 CAL 您可以将服务器版本与 CAL 类型混合搭配使用例如, 您可以使用 Exchange 2013 标准版的 Enterprise CAL 同样, 您可以使用 Exchange 2013 企业版的标准 CAL
Exchange-Unable to mount database 排错
来源: http://www.bubuko.com/infodetail-2491181.html