Exchange 和 CRM 联系人重复创建了 500,000 个联系人
Exchange and CRM contact duplication 500,000 contacts created
这里有 2 个问题,
一个解决了,但我仍然不知道是什么原因造成的,另一个是副作用
我在 Dynamics CRM 2013 中创建了一个联系人,这个过程没有什么特别之处,它和往常一样,还要注意联系人表单没有自定义插件或工作流,它的标准有一些额外的字段,
然后昨天(2015 年 4 月 3 日)我接到一个用户的电话,给我提供了 outlook 中此处联系人的屏幕截图,我新创建的联系人在那里,有数千份,
所以我在 CRM 中检查,当我搜索时我得到一个错误提示要显示很多结果,所以我直接在数据库中检查我有 498,564 个联系人副本,
所以首先我关闭了 CRM 批量删除任务,这需要 12 个小时才能完成,但清除了 CRM 中的混乱,
异步服务器日志文件充满了以下内容
Crm Exception: Message: Cannot insert duplicate key., ErrorCode: -2147220937, InnerException: Microsoft.Crm.BusinessEntities.CrmDuplicateRecordException: Cannot insert duplicate key.
at Microsoft.Crm.BusinessEntities.BusinessProcessObject.DbCreate(IBusinessEntity entity, ExecutionContext context)
at Microsoft.Crm.BusinessEntities.BusinessProcessObject.DoCreate(IBusinessEntity entity, ExecutionContext context)
[2015-04-02 01:57:38.950] Process:CrmAsyncService |Organization:3752a286-0922-e411-80e2-00505693281b |Thread: 105 |Category: Platform |User: 9af6ba29-6522-4900-9235-61db6f0ca810 |Level: Error |ReqId: a2c4d9df-8cf6-44e8-a93a-690e847b6580 | MessageProcessor.Execute ilOffset = 0x1C5
MessageProcessor fail to process message 'Create' for 'exchangesyncidmapping'.
[2015-04-02 01:57:38.982] Process:CrmAsyncService |Organization:3752a286-0922-e411-80e2-00505693281b |Thread: 105 |Category: Platform.Sql |User: 9af6ba29-6522-4900-9235-61db6f0ca810 |Level: Error |ReqId: a2c4d9df-8cf6-44e8-a93a-690e847b6580 | BusinessProcessObject.ExecuteNonQuery ilOffset = 0x34
Exception when executing non-query: insert into [ExchangeSyncIdMappingBase]([ObjectId], [ToCrmChangeType], [LastSyncErrorCode], [IsUnlinkedInCRM], [FromCrmChangeType], [ExchangeEntryId], [OwnerIdType], [IsDeletedInExchange], [ObjectTypeCode], [UserDecision], [Retries], [ExchangeSyncIdmappingId], [OwnerId], [OwningBusinessUnit]) values ('6efce4a2-5bd5-e411-8101-00505693281e', 0, 0, 0, 0, 'AAMkADIxNjdlMmIyLTM1MTctNGM5Ny1hMjUzLTJkNmYwNDVhZGJhZQBGAAAAAABTsYsrMJx3TJCdfGJteVkFBwBkWoS7TTKcR6FU7CToX++gAAAAorXRAABkWoS7TTKcR6FU7CToX++gAAAEKU86AAA=', 8, 0, 2, -1, -1, 'f2d412de-cad8-e411-8101-00505693281e', 'bdc484ff-cebc-e411-80f6-00505693281b', '7f7cda54-6e71-e411-80ee-00505693281b') Exception: System.Data.SqlClient.SqlException (0x80131904): Cannot insert duplicate key row in object 'dbo.ExchangeSyncIdMappingBase' with unique index 'ndx_uniqueobjectidmapping'. The duplicate key value is (6efce4a2-5bd5-e411-8101-00505693281e, bdc484ff-cebc-e411-80f6-00505693281b).
The statement has been terminated.
但是我们也使用服务器端同步,所以现在我有 4 个用户,包括我自己,每个邮箱都有 500,000 个合同,
尝试在 outlook 客户端中查看它们会杀死 outlook 客户端,在 OWA 中我一次只能删除 200 个,所以如果我必须手动执行,这将花费太长时间来清理。
所以我的问题
有谁知道是什么导致了 CRM 中的这种情况?
有谁知道如何快速删除这些联系人?
最后,我从 MS 网站上获得了一个 EWS 样本,并对其进行了轻微更改以删除联系人,花了大约 3 天时间才完全删除它们,但它确实有效
这里有 2 个问题,
一个解决了,但我仍然不知道是什么原因造成的,另一个是副作用
我在 Dynamics CRM 2013 中创建了一个联系人,这个过程没有什么特别之处,它和往常一样,还要注意联系人表单没有自定义插件或工作流,它的标准有一些额外的字段,
然后昨天(2015 年 4 月 3 日)我接到一个用户的电话,给我提供了 outlook 中此处联系人的屏幕截图,我新创建的联系人在那里,有数千份,
所以我在 CRM 中检查,当我搜索时我得到一个错误提示要显示很多结果,所以我直接在数据库中检查我有 498,564 个联系人副本,
所以首先我关闭了 CRM 批量删除任务,这需要 12 个小时才能完成,但清除了 CRM 中的混乱,
异步服务器日志文件充满了以下内容
Crm Exception: Message: Cannot insert duplicate key., ErrorCode: -2147220937, InnerException: Microsoft.Crm.BusinessEntities.CrmDuplicateRecordException: Cannot insert duplicate key. at Microsoft.Crm.BusinessEntities.BusinessProcessObject.DbCreate(IBusinessEntity entity, ExecutionContext context) at Microsoft.Crm.BusinessEntities.BusinessProcessObject.DoCreate(IBusinessEntity entity, ExecutionContext context) [2015-04-02 01:57:38.950] Process:CrmAsyncService |Organization:3752a286-0922-e411-80e2-00505693281b |Thread: 105 |Category: Platform |User: 9af6ba29-6522-4900-9235-61db6f0ca810 |Level: Error |ReqId: a2c4d9df-8cf6-44e8-a93a-690e847b6580 | MessageProcessor.Execute ilOffset = 0x1C5
MessageProcessor fail to process message 'Create' for 'exchangesyncidmapping'. [2015-04-02 01:57:38.982] Process:CrmAsyncService |Organization:3752a286-0922-e411-80e2-00505693281b |Thread: 105 |Category: Platform.Sql |User: 9af6ba29-6522-4900-9235-61db6f0ca810 |Level: Error |ReqId: a2c4d9df-8cf6-44e8-a93a-690e847b6580 | BusinessProcessObject.ExecuteNonQuery ilOffset = 0x34
Exception when executing non-query: insert into [ExchangeSyncIdMappingBase]([ObjectId], [ToCrmChangeType], [LastSyncErrorCode], [IsUnlinkedInCRM], [FromCrmChangeType], [ExchangeEntryId], [OwnerIdType], [IsDeletedInExchange], [ObjectTypeCode], [UserDecision], [Retries], [ExchangeSyncIdmappingId], [OwnerId], [OwningBusinessUnit]) values ('6efce4a2-5bd5-e411-8101-00505693281e', 0, 0, 0, 0, 'AAMkADIxNjdlMmIyLTM1MTctNGM5Ny1hMjUzLTJkNmYwNDVhZGJhZQBGAAAAAABTsYsrMJx3TJCdfGJteVkFBwBkWoS7TTKcR6FU7CToX++gAAAAorXRAABkWoS7TTKcR6FU7CToX++gAAAEKU86AAA=', 8, 0, 2, -1, -1, 'f2d412de-cad8-e411-8101-00505693281e', 'bdc484ff-cebc-e411-80f6-00505693281b', '7f7cda54-6e71-e411-80ee-00505693281b') Exception: System.Data.SqlClient.SqlException (0x80131904): Cannot insert duplicate key row in object 'dbo.ExchangeSyncIdMappingBase' with unique index 'ndx_uniqueobjectidmapping'. The duplicate key value is (6efce4a2-5bd5-e411-8101-00505693281e, bdc484ff-cebc-e411-80f6-00505693281b). The statement has been terminated.
但是我们也使用服务器端同步,所以现在我有 4 个用户,包括我自己,每个邮箱都有 500,000 个合同, 尝试在 outlook 客户端中查看它们会杀死 outlook 客户端,在 OWA 中我一次只能删除 200 个,所以如果我必须手动执行,这将花费太长时间来清理。
所以我的问题 有谁知道是什么导致了 CRM 中的这种情况?
有谁知道如何快速删除这些联系人?
最后,我从 MS 网站上获得了一个 EWS 样本,并对其进行了轻微更改以删除联系人,花了大约 3 天时间才完全删除它们,但它确实有效