我正在从 2016 年到 2019 年进行 Exchange 升级,并开始在多个邮箱上出现迁移失败。我从 2010 年到 2016 年没有任何问题。第一次开始迁移(使用 EMS 命令)时,我犯了一个新手错误,硬盘驱动器充满了日志。我解决了这个问题并设法移动了更多邮箱。现在任何超过 1GB 的邮箱(大约还剩 15 个)在 24-29% 之间失败,并出现以下错误。我已经研究了几个星期,只能找到对 C# 编码和应用程序的参考。
请求“[本地域].local/Users/[别名]”(e18b4061-ebc3-4f67-84b9-30810b7c4339)失败。错误代码:-2146233088 调用“net.tcp://exchange2016.[local domain].local/Microsoft.Exchange.MailboxReplicationService.ProxyService Exchange2016.[local domain].local (15.1.1913.5 caps:0FFD6FFFBF5FFFFFCB07FFFF)”失败。错误详细信息:格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数时出错http://tempuri.org/:IMailbox_ExportMessagesResult. InnerException 消息是“反序列化 Microsoft.Exchange.MailboxReplicationService.DataExportBatch 类型的对象时出错。读取 XML 数据时已超出最大数组长度配额 (35000000)。可以通过更改创建 XML 阅读器时使用的 XmlDictionaryReaderQuotas 对象的 MaxArrayLength 属性来增加此配额。有关更多详细信息,请参阅 InnerException。--> 反序列化 Microsoft.Exchange.MailboxReplicationService.DataExportBatch 类型的对象时出错。读取 XML 数据时已超出最大数组长度配额 (35000000)。可以通过更改创建 XML 阅读器时使用的 XmlDictionaryReaderQuotas 对象的 MaxArrayLength 属性来增加此配额。--> 读取 XML 数据时已超出最大数组长度配额 (35000000)。可以通过更改创建 XML 阅读器时使用的 XmlDictionaryReaderQuotas 对象的 MaxArrayLength 属性来增加此配额。 --> 格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数时出错http://tempuri.org/:IMailbox_ExportMessagesResult. InnerException 消息是“反序列化 Microsoft.Exchange.MailboxReplicationService.DataExportBatch 类型的对象时出错。读取 XML 数据时已超出最大数组长度配额 (35000000)。可以通过更改创建 XML 阅读器时使用的 XmlDictionaryReaderQuotas 对象的 MaxArrayLength 属性来增加此配额。有关更多详细信息,请参阅 InnerException。--> 反序列化 Microsoft.Exchange.MailboxReplicationService.DataExportBatch 类型的对象时出错。读取 XML 数据时已超出最大数组长度配额 (35000000)。可以通过更改创建 XML 阅读器时使用的 XmlDictionaryReaderQuotas 对象的 MaxArrayLength 属性来增加此配额。--> 读取 XML 数据时已超出最大数组长度配额 (35000000)。可以通过更改创建 XML 阅读器时使用的 XmlDictionaryReaderQuotas 对象的 MaxArrayLength 属性来增加此配额。
语境:
操作:IMailbox.ExportMessages 操作:IMailbox.ExportMessages OperationSide:源 e18b4061-ebc3-4f67-84b9-30810b7c4339(主要)标志:SkipItemValidation
道具标签:(空)
计划工作项:EnumerateFolderMessages(P:288,R:1,S:0,C:15);EnumerateFolderMessages(P:305,R:0,S:0,C:12,Cnt=6); WriteFolderMessages(P:2,R:0,S:0,C:93); EnumerateFolderMessages(P:473,R:0,S:0,C:12,Cnt=7); WriteFolderMessages(P:0,R:0,S:0,C:49); EnumerateFolderMessages(P:598,R:0,S:0,C:14); EnumerateFolderMessages(P:614,R:0,S:0,C:13,Cnt=4); WriteFolderMessages(P:2,R:0,S:0,C:1818); EnumerateFolderMessages(P:2560,R:0,S:0,C:343); WriteFolderMessages(P:2,R:0,S:0,C:1806,Cnt=5)
这是我试图解决的问题:
- 设置静态错误限制,从 100 开始并增加到 3000。没有变化。
- 创建了一个新的邮箱数据库并尝试迁移到该数据库。没变。
- 向虚拟机添加了新的数据驱动器,新驱动器上的新邮箱数据库。没变。
- 尝试了单一和批量迁移。没变。
知道如何克服这个问题吗?或者知道 Microsoft.Exchange.MailboxReplicationService.DataExportBatch 在什么文件中以便我可以更改缓冲区大小?
根据类似的线程“ Getting Error in Mailbox Migration from Exchange 2013 to 2016 for some users ”和错误“ The maximum array length quota (35000000) has been exceeded while reading XML data. ”,迁移问题可能是由于超出配额(maxArrayLength)。
您可以尝试增加 xml 文件MsExchangeMailboxReplication.exe.config ( C:\Program Files\Microsoft\Exchange Server\V15\Bin\MsExchangeMailboxReplication.exe.config ) 中的配额,然后再次迁移剩余的 15 个邮箱以检查结果. 要轻松还原更改,您可以备份原始配额。