возникли проблемы с переносом почтовых ящиков Exchange 2013 на Exchange 2019. Когда почтовый ящик находится на последних этапах миграции, он вызывает сбой целевого почтового ящика (База данных почтовых ящиков 2019). Журнал событий на сервере 2019 горит с ошибками и предупреждениями, сопровождающими каждый сбой. После каждого сбоя база данных будет повторно подключаться, и миграция будет успешно завершена. В этом году я сделал несколько обновлений до 2019 года, но это мой первый 2013 -> 2019 год. Остальные миграции (2010 -> 2016 -> 2019) прошли гладко. Вот все, что я пытался исправить.
Вот 2 ошибки, которые не покидали меня с самого начала. Источник: MSExchangeIS Event ID 1002. Поиск этой ошибки в Интернете дал мне близкие, но не совсем точные ошибки, которые должны были быть исправлены уже в старых CU.
Необработанное исключение (System.InvalidOperationException: объект, допускающий значение NULL, должен иметь значение. В System.ThrowHelper.ThrowInvalidOperationException (ресурс ExceptionResource) в Microsoft.Exchange.Protocols.MAPI.MapiMessage.IsStreamSizeInvalid (контекст MapiContext, размер Int64) в Microsoft.Exchange.Exchange. MAPI.MapiStream.ValidateStreamSize (контекст MapiContext, размер Int64) в Microsoft.Exchange.Protocols.MAPI.MapiStream.Write (контекст MapiContext, Byte [] bytesToWrite, смещение Int32, длина Int32) в Microsoft.Exchange.Server.Storage.MapiDisp. RopHandler.WriteStreamExtended (контекст MapiContext, поток MapiStream, сегмент ArraySegment
1[] dataChunks, UInt32& outputByteCount, WriteStreamExtendedResultFactory resultFactory) at Microsoft.Exchange.Server.Storage.MapiDisp.RopHandlerBase.WriteStreamExtended(IServerObject serverObject, ArraySegment
1 [] dataChunks, WriteStreamExtendedResultFactory resultFactory) в Microsoft.Exchange.RpcClientAccess.Parser.RopWriteStreamExtended.InternalExecute (IServerObject serverObject, IRopHandler ropHandler, ArraySegment1 outputBuffer) at Microsoft.Exchange.RpcClientAccess.Parser.InputRop.Execute(IConnectionInformation connection, IRopDriver ropDriver, ServerObjectHandleTable handleTable, ArraySegment
1 outputBuffer) в Microsoft.Exchange.RpcClientAccess.Parser.RopDriver.ExecuteRops (List1 inputArraySegmentList, ServerObjectHandleTable serverObjectHandleTable, ArraySegment
1 outputBuffer, Int32 outputIndex, Int32 maxOutputSize, Boolean isOutputBufferMaxSize, Int32 & outputSize, A additionalData a secondaryData, Boolean isFake, Byte [] & fakeOut) в Microsoft.Exchange.RpcClientAccess.Parser.RopDuteriver.Exe1 inputBufferArray, ArraySegment
1 outputBuffer, Int32 & outputSize, Вспомогательные данные, вспомогательные данные, логическое значение isFake, Byte [] и fakeOut) в Microsoft.Exchange.Server.Storage.MapiDisp.MapiRpc. <> C__DisplayClass29_1.b__0 (MapiContext operationContext, MapiContext operationContext, MapiSession вспомогательных данных и сеанс) Microsoft.Exchange.Server.Storage.MapiDisp.MapiRpc.Execute (IExecutionDiagnostics executionDiagnostics, MapiContext outerContext, String functionName, Boolean isRpc, IntPtr & contextHandle, Boolean tryLockSession, String userDn, IList1 dataIn, Int32 sizeInMegabytes, ArraySegment
1 вспомогательный вход, сегмент массива1 auxOut, Int32& sizeAuxOut, ExecuteDelegate executeDelegate) at Microsoft.Exchange.Server.Storage.MapiDisp.MapiRpc.DoRpc(IExecutionDiagnostics executionDiagnostics, IntPtr& contextHandle, IList
1 ropInArraySegments, ArraySegment1 ropOut, Int32& sizeRopOut, Boolean internalAccessPrivileges, ArraySegment
1 вспомогательный вход, сегмент массива1 auxOut, Int32& sizeAuxOut, Boolean fakeRequest, Byte[]& fakeOut) at Microsoft.Exchange.Server.Storage.MapiDisp.PoolRpcServer.EcDoRpc(MapiExecutionDiagnostics executionDiagnostics, IntPtr& sessionHandle, UInt32 flags, UInt32 maximumResponseSize, ArraySegment
1 запрос, ArraySegment1 auxiliaryIn, IPoolSessionDoRpcCompletion completion) at Microsoft.Exchange.Server.Storage.MapiDisp.PoolRpcServer.EcPoolSessionDoRpc_Unwrapped(MapiExecutionDiagnostics executionDiagnostics, IntPtr contextHandle, UInt32 sessionHandle, UInt32 flags, UInt32 maximumResponseSize, ArraySegment
1 запрос, ArraySegment`1 вспомогательный вход, завершение IPoolSessionDoRpcCompletion)
в Microsoft.Exchange.Server.Storage.MapiDisp.PoolRpcServer. <> c__DisplayClass48_0.b__0 () в Microsoft.Exchange.Common.IL.ILUtil.DoTryFilterCatch [T] (действие tryDelegate, GenericFilterDelegate filterDelegateDelegate).
Источник: идентификатор события MSExchangeIS 1013
Почтовый ящик с guid 8f656114-9b45-43ac-8073-8ddd3f7596b8 вызвал сбой или отключение ресурсов в базе данных «База данных почтовых ящиков 2» (da3e70b9-c9b1-4937-9fb1-f18324f85926).
Версия: 15.02.0464.005 Описание: InvalidOperationException: S.ThrowHelper.ThrowInvalidOperationException, MEPMAPI.MapiMessage.IsStreamSizeInvalid, MEPMAPI.MapiStream.ValidateStreamSize, MEPMAPI.MapiStream.ValidateStreamSize, MEPMAPI.MapiStream.ValidateStreamSize, MEPMAPI.MapiStream.
На первый взгляд я знаю, что означает ошибка ... Я не знаю, где ее исправить. Если вам нужна дополнительная информация или журналы событий, я предоставлю. Спасибо за помощь!
Какой номер сборки у вашего Exchange Server 2013? Основываясь на моем исследовании, Код события MSExchangeIS 1013 похоже, вызвано неподдерживаемым .NET Framework
версия, официальная документация, связанная с событием 1013, предназначена для вашей справки: Почтовые ящики помещены в карантин, и базы данных неожиданно отключаются при отказе в Exchange Server 2013, и вы можете запустить следующие команды, чтобы проверить, является ли текущая версия .NET Framework вашего Exchange 2013 CU поддерживаемая / неподдерживаемая версия(В то же время вы также можете проверить это на своем сервере Exchange 2019):
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Server) $RegKey= $Reg.OpenSubKey("SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full") [int]$NetVersionKey= $RegKey.GetValue("Release") if($NetVersionKey -ge 381029) { "4.6 or later" return } switch ($NetVersionKey) { {($_ -ge 378389) -and ($_ -lt 378675)} {"4.5"} {($_ -ge 378675) -and ($_ -lt 379893)} {"4.5.1"} {$_ -ge 379893} {"4.5.2"} default {"Unable to Determine"} }