首页 > 代码库 > 使用SSIS对Dynamics CRM 系统进行数据迁移

使用SSIS对Dynamics CRM 系统进行数据迁移

    嗨,各位。最近项目一直都很忙,并且自己也一直在思考职业发展的问题,所以有很长一段时间没静下心写几篇Blog了。最近我参与的项目是Dynamics CRM 2011 到 Dynamics CRM 2013 Online的数据迁移,刚好接着今天这个机会和大家分析一下数据迁移的心得吧。

    读过我之前文章的朋友肯定记得我把Dynamics CRM的接口分为了两大类:1)功能接口,2)数据接口。今天要说的数据迁移可以理解为数据接口,实现数据接口的方式有很多种,比如C#制作的程序,数据库层的SQL 脚本,以及今天我要和给大家介绍的主角SQL Server Integration Service(SSIS)。

    为什么要使用SSIS呢?肯定是简单了,SSIS提供了功能丰富的控件给我们使用,比如:FTP控件,Excel控件,以及大量五花八门的控件以及第三方组件。回到今天我们的话题,如何使用SSIS实现Dynamics CRM 2011 与 Dynamics CRM 2013之前的数据迁移呢?我们有两种方案可选:1)使用Script Component编写Proxy来处理Dynamics CRM数据的CRUD操作,2)使用第三方的Dynamics CRM Component实现Dynamics CRM数据的CRUD操作。

    这里就要根据项目情况来进行把控了,如果数据量不是很多,且数据结构简单,当然是用ScriptComponent了,反之则是第三反的收费组件,例如:Cozyroc, SSIS Integration Toolkit for Dynamics CRM。顺便提下,第二个组件是又咱们的Denical Cai开发的。

    在数据迁移的过程中,最麻烦的事情还是处理特殊结构的实体,例如活动类型的实体Service Appointment,以及包含Party List 控件的Opportunity实体。对于这些实体我们需要做额外的数据处理,当然还是能实现的。接下来介绍几个在制作SSIS Pacakge中比较有用的方法吧:

1. 将SSIS Project 的WorkOffline设置为False: SSIS Menu-->Work Offline


2.使用数据源的Expressions设置晚期绑定数据源连接信息


3.可以使用Package Level Variable 和 Project Level Variable 保存一些重要的验证信息


4.如果Package经常出现死锁,可以将Package的TransactionOption设置为NotSupported。以及修改IsolationLevel设置。


大致就是以上几点,希望对大家有帮助,如果给位有好的建议欢迎和我交流。 :)