2016-06-08 70 views
2

先决条件检索复杂对象:

我想在包执行开始连接到MS Dynamics CRM中的Web服务和重用遍布包的连接,但我没有通过SSIS变量做到这一点。SSIS脚本任务`无效的转换exception`从变量

我不能使用连接管理器,因为我使用OrganizationService.Execute方法不是由WebService的任务向导

步骤支持:

  1. 新增Microsoft.Xrm.Sdk的DLL到GAC和脚本参考;
  2. 创建数据流任务和内部
  3. 创建2个变量crmOrganizationServicecrmOrganizationServiceProxy
    • 类型的两个两个独立的脚本任务System.Object
    • script task 1script task 2可以读写它们
  4. script task 1

    • 实例化OrganizationServiceProxyOrganizationService并连接到MS Dynamics CRM Web服务。
    • 分配对象的两个实例变量

      //create public OrganizationServiceProxy _serviceProxy = new OrganizationServiceProxy(orgServiceManagement, adCredentials); public IOrganizationService _service =(IOrganizationService)_serviceProxy; //assign this.Variables.crmOrganizationServiceProxy= _serviceProxy; this.Variables.crmOrganizationService=_service;

  5. 内的script task 2

    OrganizationServiceProxy _serviceProxy = (OrganizationServiceProxy)this.Variables.crmOrganizationServiceProxy

错误:

在步骤5我接受,因为无法投的无效转换异常System.ObjectMicrosoft.Xrm.Sdk.Client.OrganizationServiceProxy

解决方法:

我敢肯定,问题是变量的基本拳法,而通过他们的脚本任务之间。但我没有找到更好的一般方法。在它内部,我需要在脚本任务之间传递自定义类的实例。

回答

1

你可以使用Reflection or a custom SSIS component但也许这样做是不值得的。

另一种选择是在SSIS包和CRM之间托管临时Web服务,并在Web服务中缓存连接。也许这对你来说容易得多。