Exchange

將郵箱從 Exchange 2013 CU23 遷移到 Exchange 2019 CU7 會導致目標數據庫崩潰

  • October 14, 2020

文本是機器翻譯的。

我在從 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 標準、VM 版本 8 上使用 OS Server 2019 標準(最新更新檔級別)的 VM
  • 交換伺服器 2013 Cu23 + .NET4.8
  • 安裝 Exchange Server 2019 CU7 + .NET 4.8
  • AD 級別(林和域)均為 2012R2

到目前為止,已經檢查或解決了以下幾點:

  • 各種郵箱、各種 VHD 上的各種數據庫的相同錯誤模式
  • Ex2019 上本地數據庫之間的移動請求也會導致此錯誤
  • 將 VM 移動到新安裝的 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:

Microsoft.Exchange.Protocols.MAPI.MapiMessage.IsStreamSizeInvalid(MapiContext context, Int64 size) 的 Microsoft.Exchange.Protocols 的 System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) 的未處理異常(System.InvalidOperationException:Nullable 對象必須有一個值)。 MAPI.MapiStream.ValidateStreamSize(MapiContext 上下文,Int64 大小)在 Microsoft.Exchange.Protocols.MAPI.MapiStream.Write(MapiContext 上下文,字節

$$ $$bytesToWrite,Int32 偏移量,Int32 長度)在 Microsoft.Exchange.Server.Storage.MapiDisp.RopHandler.WriteStreamExtended(MapiContext 上下文,MapiStream 流,ArraySegment 1[] dataChunks, UInt32& outputByteCount, WriteStreamExtendedResultFactory resultFactory) bei Microsoft.Exchange.Server.Storage.MapiDisp.RopHandlerBase.WriteStreamExtended(IServerObject serverObject, ArraySegment1$$ $$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, ArraySegment1 outputBuffer) 在 Microsoft.Exchange.RpcClientAccess.Parser.RopDriver.ExecuteRops(List 1 inputArraySegmentList, ServerObjectHandleTable serverObjectHandleTable, ArraySegment1 outputBuffer, Int32 outputIndex, Int32 maxOutputSize) , Boolean isOutputBufferMaxSize, Int32& outputSize, AuxiliaryData assistantData, Boolean isFake, Byte$$ $$& fakeOut) bei Microsoft.Exchange.RpcClientAccess.Parser.RopDriver.ExecuteOrBackoff(IList 1 inputBufferArray, ArraySegment1 outputBuffer, Int32& outputSize, AuxiliaryData assistantData, Boolean isFake, Byte$$ $$& fakeOut) bei Microsoft.Exchange.Server.Storage.MapiDisp.MapiRpc.<>c__DisplayClass29_1.b__0(MapiContext operationContext, MapiSession& session, Boolean& deregisterSession, AuxiliaryData assistantData) bei Microsoft.Exchange.Server.Storage.MapiDisp.MapiRpc.Execute(IExecutionDiagnostics executionDiagnostics, MapiContext outerContext, String functionName, Boolean isRpc, IntPtr& contextHandle, Boolean tryLockSession, String userDn, IList 1 dataIn, Int32 sizeInMegabytes, ArraySegment1 auxIn, ArraySegment 1 auxOut, Int32& sizeAuxOut, ExecuteDelegate executeDelegate) bei Microsoft.Exchange.Server.Storage.MapiDisp.MapiRpc.DoRpc(IExecutionDiagnostics executionDiagnostics, IntPtr& contextHandle, IList1 ropInArraySegments, ArraySegment 1 ropOut, Int32& sizeRopOut, Boolean internalAccessPrivileges, ArraySegment1 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, ArraySegment1 請求, ArraySegment 1 auxiliaryIn, IPoolSessionDoRpcCompletion completion) bei Microsoft.Exchange.Server.Storage.MapiDisp.PoolRpcServer.EcPoolSessionDoRpc_Unwrapped(MapiExecutionDiagnostics executionDiagnostics, IntPtr contextHandle, UInt32 sessionHandle, UInt32 flags, UInt32 maximumResponseSize, ArraySegment1 請求, ArraySegment`1 輔助輸入, IPoolSessionDoRpcCompletion 完成) bei Microsoft .Exchange.Server.Storage.MapiDisp.PoolRpcServer.<>c__DisplayClass48_0.b__0() 在 Microsoft.Exchange.Common.IL.ILUtil.DoTryFilterCatch$$ T $$(動作 tryDelegate、GenericFilterDelegate filterDelegate、GenericCatchDelegate catchDelegate、T 狀態)。 你們有誰知道這個問題並可以提供幫助嗎?

我處於沒有其他解決方案的地步:我想乾淨地解除安裝新的 Ex2019,重新安裝 VM 並再次開始遷移過程。也許基本安裝出了點問題,但這更像是一個猜測。在第一個遷移批次或移動請求之前沒有異常、崩潰等。

我可以通過這種方式從 AD 中乾淨地刪除 Ex2019 並重新啟動它嗎?

非常感謝你的努力。

問候

目前看來我已經找到並解決了問題。至少伺服器現在正在執行大約 6 小時,並且在兩個方向上進行了幾次郵箱遷移,而沒有任何數據庫斷開連接。

錯誤出現在全域傳輸配置 (get-transportconfig) 中,MaxReceiveSize 的值設置為無限制。因為我已經在多個版本上遷移了郵件伺服器(Ex2003 –> Ex2007 –> Ex2013),所以我不能說這是預設值還是在某個時候設置的那樣。我現在設置了一個固定值,就像 MaxSendSize 一樣,從那時起我在 Ex2019 上沒有斷開數據庫。

我注意到 Ex2019 數據庫上的健康郵箱被定期隔離。這導致了數據庫的問題。在故障排除期間,我在這裡看到了這篇文章:https ://dustindorch.com/2020/02/08/mailbox-quarantined-after-migrating-to-exchange-server-2019/

我現在正在觀察這種行為,並將再次與您聯繫。

問候

引用自:https://serverfault.com/questions/1038496