我们需要将数据(8k records
)插入CRM Entity
,数据将来自其他CRM Entities
。目前我们正在通过代码完成它,但需要花费太多时间(Hours
)。我想知道我们是否使用SQL
直接插入CRM Database
它会更容易,只需几分钟。但在向前移动之前我几乎没有问题:
使用SQL直接插入CRM数据库是否安全?
使用SQL将数据插入CRM的最佳做法是什么?
在尝试之前我应该考虑哪些事项?
修改
4:如何提高插入性能?
答案 0 :(得分:7)
ExecuteMultipleRequest
可用于批量批量导入。请参阅http://msdn.microsoft.com/en-us/library/jj863631.aspx 答案 1 :(得分:4)
插入8000条记录不应花费数小时。看看你的代码会有所帮助,但是有些事情需要考虑以提高性能:
答案 2 :(得分:3)
我没有使用您所指的CRM application
,但是如果您绕过代码,您可能会绕过某些限制,甚至根据发送的某些值触发代码。
例如,如果您通过代码发送了一个数字,它可能会对该数字执行一些数学函数并将其添加到其他值,并最终在数据库中存储两个值(您输入的数字的一个值,和另一个代表总数的值,包括新添加的一个。)
因此,如果您刚刚将一个值直接插入数据库,则总数不会随之更新。
这只是一个假设的情景。你可能不会遇到任何类似的问题,但可能有机会。
答案 3 :(得分:3)
我发现this article非常有帮助。 它说:
不支持直接SQL写入CRM数据库。原因是在CRM数据库中创建记录不仅仅是INSERT INTO…
- 语句。优化的第一步是了解幕后发生的事情并影响速度:
1。 CRM实体通常由2个物理表组成。
2. 级联规则/共享:如果创建的记录与之有任何关系 级联规则,Web服务将自动处理级联。 例如,级联共享将导致额外的记录 在PrincipalObjectAccess表中创建。如果是一次性的 迁移,在迁移运行时禁用级联规则 节省大量时间
3。记录所有权:如果要插入记录,请确保记录 将所有者设置为create的属性而不是 附加所有者分配请求。分配所有者实际上需要
4. 资金/时间:网络服务处理货币和时区。
5. 工作流程/插件:如果系统有任何自定义工作流程和/或 插件,我强烈建议暂停它们 迁移。