该文本是由机器翻译的。
我需要帮助解决从 Exchange Server 2013 CU23 迁移到 Exchange Server 2019 过程中的问题。
我遇到了与 ShiftTechGuy 在 7 月 31 日提出的问题相同的问题,但是他的帖子中没有发布任何解决方案:从 Exchange 2013 迁移到 2019 导致目标数据库崩溃
我目前正在将 Exchange Server 从 Ex2013Cu23 迁移到 Ex2019Cu7,目前面临的问题是,将邮箱移动到 Ex2013-DB 时,新的 Ex2019-DB 断开连接,短暂时间后再次可用,移动请求也已完成。如果移动邮箱,Outlook 可以连接到它。我已经排除故障 2 天了,但找不到解决方案。
Ex2019 的安装和配置也一直有效,直到邮箱被移动。我注意到的第一件事是,当我通过 WebGUI 创建迁移批处理时,它不会启动,并且在我打开它时不会显示任何信箱。您只能通过 Powershell 删除它。在这里我找到了信息,您应该先移动迁移邮箱,然后它应该可以工作。但我还没有移动迁移邮箱,因为我遇到了上面提到的 Ex2019 上数据库分离的问题。
这里首先简单概述一下环境:
Hyper-V Host Server 2016 标准版上的带有 OS Server 2019 标准版(最新补丁级别)的 VM,VM 版本 8
Exchange 服务器 2013 Cu23 + .NET4.8
安装 Exchange Server 2019 CU7 + .NET 4.8
AD 级别(林和域)均为 2012R2
到目前为止,已经检查或研究了以下几点:
不同邮箱、不同 VHD 上的不同数据库的错误模式相同
Ex2019 上的本地数据库之间的移动请求也会导致此错误
将虚拟机移至新安装的 Hyper-V Host Server 2019:同样的错误
移动请求期间出现以下事件日志条目:ExchangeStoreDB,ID 225:
在‘12.10.2020 13:17:46’,此服务器上数据库‘MBX2019’的副本意外被卸载。故障转移返回的错误是“刚刚复制了邮政数据银行(MBX2019)。这不是自动重新处理。”。有关失败的更多具体信息,请查阅服务器上的事件日志中是否存在其他“ExchangeStoreDb”事件。
MSExchangeIS,ID 1013:
邮箱 GUID 为 2241df18-af16-46ac-9d60-17935fdb05ff 的邮箱导致数据库“MBX2019”(44f38f99-38cd-46d5-8a81-54fde40c5069) 崩溃或资源中断。
版本:15.02.0721.002 描述:InvalidOperationException:
MSEchangeIS,ID 1002:
未处理的异常(System.InvalidOperationException:该对象必须具有空值。(英文:可空对象必须具有值)在 System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource 资源)在 Microsoft.Exchange.Protocols.MAPI.MapiMessage.IsStreamSizeInvalid(MapiContext context,Int64 size)在 Microsoft.Exchange.Protocols.MAPI.MapiStream.ValidateStreamSize(MapiContext context,Int64 size)在 Microsoft.Exchange.Protocols.MAPI.MapiStream.Write(MapiContext context,Byte[] bytesToWrite,Int32 offset,Int32 length)在 Microsoft.Exchange.Server.Storage.MapiDisp.RopHandler.WriteStreamExtended(MapiContext context,MapiStream stream,ArraySegment 1[] dataChunks, UInt32& outputByteCount, WriteStreamExtendedResultFactory resultFactory) bei Microsoft.Exchange.Server.Storage.MapiDisp.RopHandlerBase.WriteStreamExtended(IServerObject serverObject, ArraySegment
1[] dataChunks,WriteStreamExtendedResultFactory resultFactory) 在 Microsoft.Exchange.RpcClientAccess.Parser.RopWriteStreamExtended.InternalExecute(IServerObject serverObject、IRopHandler ropHandler、ArraySegment 1 outputBuffer) bei Microsoft.Exchange.RpcClientAccess.Parser.InputRop.Execute(IConnectionInformation connection, IRopDriver ropDriver, ServerObjectHandleTable handleTable, ArraySegment
1 outputBuffer) 在 Microsoft.Exchange.RpcClientAccess.Parser.RopDriver.ExecuteRops(List 1 inputArraySegmentList, ServerObjectHandleTable serverObjectHandleTable, ArraySegment
1 outputBuffer、Int32 outputIndex、Int32 maxOutputSize、Boolean isOutputBufferMaxSize、Int32& outputSize、AuxiliaryDataauxiliaryData、Boolean isFake、Byte[]&fakeOut) 在 Microsoft.Exchange.RpcClientAccess.Parser.RopDriver.ExecuteOrBackoff(IList 1 inputBufferArray, ArraySegment
1 outputBuffer、Int32& outputSize、AuxiliaryDataauxiliaryData、BooleanisFake、Byte[]&fakeOut) 在Microsoft.Exchange.Server.Storage.MapiDisp.MapiRpc.<>c__DisplayClass29_1.b__0(MapiContext operationContext、MapiSession& session、Boolean& deregisterSession、AuxiliaryDataauxiliaryData)bei Microsoft.Exchange.Server.Storage.MapiDisp.MapiRpc.Execute(IExecutionDiagnosticsexecutionDiagnostics、MapiContext outerContext、String functionName、Boolean isRpc、IntPtr&contextHandle、BooleantryLockSession、String userDn、IList 1 dataIn, Int32 sizeInMegabytes, ArraySegment
1 auxIn、ArraySegment 1 auxOut, Int32& sizeAuxOut, ExecuteDelegate executeDelegate) bei Microsoft.Exchange.Server.Storage.MapiDisp.MapiRpc.DoRpc(IExecutionDiagnostics executionDiagnostics, IntPtr& contextHandle, IList
1 ropInArraySegments、ArraySegment 1 ropOut, Int32& sizeRopOut, Boolean internalAccessPrivileges, ArraySegment
1 auxIn、ArraySegment 1 auxOut, Int32& sizeAuxOut, Boolean fakeRequest, Byte[]& fakeOut) bei Microsoft.Exchange.Server.Storage.MapiDisp.PoolRpcServer.EcDoRpc(MapiExecutionDiagnostics executionDiagnostics, IntPtr& sessionHandle, UInt32 flags, UInt32 maximumResponseSize, ArraySegment
1 request、ArraySegment 1 auxiliaryIn, IPoolSessionDoRpcCompletion completion) bei Microsoft.Exchange.Server.Storage.MapiDisp.PoolRpcServer.EcPoolSessionDoRpc_Unwrapped(MapiExecutionDiagnostics executionDiagnostics, IntPtr contextHandle, UInt32 sessionHandle, UInt32 flags, UInt32 maximumResponseSize, ArraySegment
1 request、ArraySegment`1auxIn、IPoolSessionDoRpcCompletion 完成)bei Microsoft.Exchange.Server.Storage.MapiDisp.PoolRpcServer.<>c__DisplayClass48_0.b__0() 在 Microsoft.Exchange.Common.IL.ILUtil.DoTryFilterCatch[T](Action tryDelegate、GenericFilterDelegate filterDelegate、GenericCatchDelegate catchDelegate、T state))。
你们中有谁知道这个问题并且可以提供帮助吗?
我现在已经没有其他解决方案了:我想彻底卸载新的 Ex2019,重新安装虚拟机并再次启动迁移过程。也许基本安装出了问题,但这更像是一种猜测。在第一个迁移批处理或移动请求之前,没有出现任何异常、崩溃等。
我可以通过这种方式从 AD 中干净地删除 Ex2019 并重新启动它吗?
非常感谢你的努力。
问候
答案1
目前看来我已经找到并修复了这个问题。至少服务器从大约 6 小时前开始运行,并且进行了几次双向邮箱迁移,没有出现任何数据库断开的情况。
错误发生在全局传输配置 (get-transportconfig) 中的 MaxReceiveSize 值处,该值被设置为 Unlimited。由于我已经将邮件服务器迁移了多个版本 (Ex2003 --> Ex2007 --> Ex2013),因此我无法确定这是默认值还是在某个时候设置成那样。我现在设置了一个固定值,就像 MaxSendSize 一样,从那时起,我就再也没有断开过 Ex2019 上的数据库连接。
我注意到 Ex2019 数据库上的健康邮箱经常被隔离。这导致了数据库出现问题。在故障排除过程中,我偶然发现了这篇文章:https://dustindortch.com/2020/02/08/mailbox-quarantined-after-migrating-to-exchange-server-2019/
我现在正在观察该行为并将再次与您联系。
问候
答案2
我很高兴你找到了解决问题的方法。
此外,新数据库是否可以将 Exchange 2013 用户迁移到 Exchange 2019?
您可以关注Exchange 部署助理将 Exchange 2013 迁移到 Exchange 2019。
答案3
解决方案:
你好,
简短的返回信息。
Ex2019 运行正常,问题似乎已通过在传输配置中为 MaxReceiveSize 或 MaxSendSize 固定分配值来解决。我将此主题标记为已解决。