3

我们需要将 data( 8k records) 插入到 aCRM Entity中,数据将来自 other CRM Entities。目前我们是通过代码来完成的,但它需要太多时间(Hours)。我想知道我们是否使用SQL直接插入CRM Database它会容易得多,并且只需要几分钟。但在继续前进之前,我有几个问题

  1. 使用 SQL 直接插入 CRM 数据库是否安全?

  2. 使用 SQL 将数据插入 CRM 的最佳实践是什么?

  3. 在尝试之前我应该​​考虑什么?

编辑:

4:如何提高插入性能?

4

4 回答 4

7
  1. 不它不是。它被认为是不受支持的
  2. 不要这样做
  3. Rollup 12 刚刚发布,包含一个新的 API 功能。现在有一个ExecuteMultipleRequest可以用于批量批量导入。请参阅 http://msdn.microsoft.com/en-us/library/jj863631.aspx
于 2013-01-10T06:07:04.700 回答
4

It shouldn't take hours to insert 8000 records. It would help to see your code, but here are some things to consider to improve performance:

  1. Reuse your IOrganizationService. I've found a 10x increase in performance by reusing a IOrganizationService, rather than creating a new one with each record that is being updated
  2. Use multi-threading. You have to be careful with this one, because it could lead to worse performance if the function to check for the entity existing is your bottle neck.
  3. Tweak your exists function. If the check for the entity existing is taking a long time, consider pulling back the entire table and storing it in memory (assuming it's not ridiculously huge). This would remove 8000 separate select statements.
  4. Turn off plugins that may be degrading performance. If you have any plugins registered on the entity, see if performance increases if you disable them during the import.
  5. Create a new, "How do I increase the insert performance" question with your code posted for additional help.
于 2013-01-10T14:33:55.810 回答
3

我没有使用CRM application您所指的内容,但是如果您绕过代码,您可能会绕过某些限制,甚至根据发送的某些值触发代码已经到位。

例如,如果您通过代码发送一个数字,它可能会对该数字执行一些数学函数并将其添加到某个其他值并最终在数据库中存储两个值(一个值用于您输入的数字,另一个值代表包括新增加的总数)。

因此,如果您只是将一个值直接插入到数据库中,那么总数将不会随之更新。

这只是一个假设的场景。您可能不会遇到任何类似的问题或任何其他问题,但可能会有机会。

于 2013-01-10T06:04:45.597 回答
3
于 2013-01-10T06:29:32.927 回答