将使用SSIS和C#的CRUD进程导入CRM 2011

本文关键字:进程 CRUD 导入 CRM 2011 SSIS | 更新日期: 2023-09-27 18:21:18

我正在尝试使用CRM web服务将联系人记录插入/更新到CRM 2011(内部部署RO15)。我使用SSIS包从我的源中获取数据,并使用C#(脚本组件)将它们插入到CRM中。

最初,我使用ContactInput_ProcessInputRow(ContactInputBuffer row)方法一次使用一行。这将一次插入一行,在阅读这篇文章后,我改为使用ContactInput_ProcessInput(ContactInputBuffer Buffer)方法进行批量导入。

当它开始插入行时,这似乎首先解决了问题。但在大约1500行之后,我得到了超时错误。通常,我会在配置文件中更改客户端超时设置,但因为这是通过脚本组件完成的,所以我看不到配置文件。我还将服务器端的超时限制增加到24小时。

我使用的C#代码与上面文章(链接)中的大容量插入代码相同。我已经将缓冲区大小更改为10,因为这是Scribe使用的,并且与我们的CRM 2011设置配合良好。

如何解决此超时问题?我预计每次集成将有大约5K条记录。

将使用SSIS和C#的CRUD进程导入CRM 2011

感谢您的回复。我想我已经通过在app.config文件(脚本组件中)中添加以下代码块来解决这个问题。

    <system.web>
    <httpRuntime executionTimeout="12000"/>
</system.web>
<system.serviceModel>
    <bindings>
        <netTcpBinding>
            <binding name="longTimeoutBinding"
              receiveTimeout="02:00:00" sendTimeout="02:00:00" closeTimeout="02:00:00" openTimeout="02:00:00">
                <security mode="None"/>
            </binding>
        </netTcpBinding>
    </bindings>
    <services>
        <service name="longTimeoutService"
          behaviorConfiguration="longTimeoutBehavior">
            <endpoint address="net.tcp://localhost/longtimeout/"
              binding="netTcpBinding" bindingConfiguration="longTimeoutBinding" />
        </service>
        </services>
        </system.serviceModel>

我做了一些后续测试,我成功地插入/更新了大约7K的记录,没有出现任何错误。我希望这能帮助任何像我一样迷失的灵魂!