我有一个Dynamics CRM 2011实例,数据库已损坏。损坏的数据似乎被隔离到几个表(例如PrincipalObjectAccess),并且实例仍然正常地运行到所有外观。数据无法恢复(所有形式的DBCC CHECKDB等都已运行)并且备份不可用(备份上的讲道无助于解决问题)。
我尝试过使用dbForge和Red-Gate提供的模式和数据同步工具,架构同步可以工作,但数据同步似乎总是不一致。
在这个时刻,我认为我的最佳途径可能是从Dynamics CRM 2011导出所有数据,然后将其导入到Dynamics CRM 2011的新实例中。有关实现此目标的最佳方法的任何想法吗?还是纠正这种情况的其他方法?
答案 0 :(得分:4)
导出所有数据并将其导入新组织可能会产生更多错误,除非其他一切都失败,否则我不会真正使用该选项。
您说数据同步失败:您是否尝试先从新实例中删除所有数据,然后再运行数据同步。当数据已经存在时,它应该比同步更简单。
您是否尝试过使用ApexSQL Data Diff同步数据?
您可以尝试的另一个不需要您创建新组织的选项是读取SQL Server事务日志并检查是否可以在那里找到损坏的数据。如果您可以检索数据,那么您只需重新创建包含有效数据的表,您就会很好。不幸的是,这只能使用ApexSQL Log
等第三个pary工具答案 1 :(得分:3)
我建议您查看CRM 2011实例适配器
与Scribe不同,它是免费的。
PowerObjects也写了一篇关于它的文章: http://www.powerobjects.com/blog/2012/10/26/introduction-microsoft-dynamics-crm-2011-instance-adapter/
彼得
答案 2 :(得分:2)
如果可以,请导出到Excel并从那里导入 优势:简单,快速,可掌握
如果不能,请设计一个连接到服务器的控制台应用程序,查询它,获取数据并将其推送到另一个实例中。
优势:完全控制,可重复性,可配置性,冷静因子,您可以键入一些代码
答案 3 :(得分:1)
这实际上取决于数据的范围。你是在谈论拥有大量实体的数百万条记录,还是在谈论拥有大约一千条记录的几个实体?
如果它很小,你总是可以尝试通过excel导出然后导入新的组织。
SSIS,CozyRoc或Scribe会做到这一点。如果是关键任务,我会选择Scribe并逐个实体。