使用sql插入crm数据库是否安全?

时间:2013-01-10 05:53:26

标签: sql dynamics-crm-2011 dynamics-crm

我们需要将数据(8k records)插入CRM Entity,数据将来自其他CRM Entities。目前我们正在通过代码完成它,但需要花费太多时间(Hours)。我想知道我们是否使用SQL直接插入CRM Database它会更容易,只需几分钟。但在向前移动之前我几乎没有问题

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

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

  3. 在尝试之前我应该​​考虑哪些事项?

  4. 修改

    4:如何提高插入性能?

4 个答案:

答案 0 :(得分:7)

  1. 不,不是。它被视为unsupported
  2. 不要这样做
  3. Rollup 12刚刚发布,包含一个新的API功能。现在有ExecuteMultipleRequest可用于批量批量导入。请参阅http://msdn.microsoft.com/en-us/library/jj863631.aspx

答案 1 :(得分:4)

插入8000条记录不应花费数小时。看看你的代码会有所帮助,但是有些事情需要考虑以提高性能:

  1. 重用您的IOrganizationService。通过重用IOrganizationService,我发现性能提高了10倍,而不是为每个正在更新的记录创建一个新的
  2. 使用多线程。你必须要小心这个,因为如果检查现有实体的功能是你的瓶颈,它可能导致更糟糕的性能。
  3. 调整您的存在功能。如果检查现有实体需要很长时间,请考虑拉回整个表并将其存储在内存中(假设它不是非常大)。这将删除8000个单独的选择语句。
  4. 关闭可能降低性能的插件。如果您在实体上注册了任何插件,请查看在导入期间禁用性能是否会提高性能。
  5. 创建一个新的“我如何提高插入性能”问题,并附上您的代码以获取更多帮助。

答案 2 :(得分:3)

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

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

因此,如果您刚刚将一个值直接插入数据库,则总数不会随之更新。

这只是一个假设的情景。你可能不会遇到任何类似的问题,但可能有机会。

答案 3 :(得分:3)

我发现this article非常有帮助。 它说

不支持直接SQL写入CRM数据库。原因是在CRM数据库中创建记录不仅仅是INSERT INTO… - 语句。优化的第一步是了解幕后发生的事情并影响速度:

1。 CRM实体通常由2个物理表组成。

2. 级联规则/共享:如果创建的记录与之有任何关系     级联规则,Web服务将自动处理级联。     例如,级联共享将导致额外的记录     在PrincipalObjectAccess表中创建。如果是一次性的     迁移,在迁移运行时禁用级联规则     节省大量时间

3。记录所有权:如果要插入记录,请确保记录     将所有者设置为create的属性而不是     附加所有者分配请求。分配所有者实际上需要

4. 资金/时间:网络服务处理货币和时区。

5. 工作流程/插件:如果系统有任何自定义工作流程和/或     插件,我强烈建议暂停它们     迁移。