3

data( 8k records) を aに挿入する必要があります。CRM Entityデータは other から取得されますCRM Entities。現在、コードで実行していますが、時間がかかりすぎます ( Hours)。SQLに直接挿入すればCRM Database、はるかに簡単になり、数分しかかからないのではないかと思っていました. しかし、先に進む前に、いくつか質問があります

  1. SQL を使用して CRM データベースに直接挿入しても安全ですか?

  2. SQL を使用して CRM にデータを挿入するためのベスト プラクティスは何ですか?

  3. 試す前に考慮すべきことは何ですか?

編集:

4: どうすればインサートのパフォーマンスを向上させることができますか?

4

4 に答える 4

7
  1. いいえそうではありません。サポートされていないと見なされます
  2. やらないで
  3. ロールアップ 12 がリリースされたばかりで、新しい API 機能が含まれています。ExecuteMultipleRequest一括一括インポートに使用できる が追加されました。http://msdn.microsoft.com/en-us/library/jj863631.aspxを参照して ください。
于 2013-01-10T06:07:04.700 に答える
4

8000 レコードを挿入するのに何時間もかかることはありません。コードを確認すると役立ちますが、パフォーマンスを向上させるために考慮すべき点がいくつかあります。

  1. IOrganizationService を再利用します。IOrganizationService を再利用することで、更新されるレコードごとに新しいサービスを作成するのではなく、パフォーマンスが 10 倍向上することがわかりました。
  2. マルチスレッドを使用します。エンティティの存在をチェックする関数がボトルネックである場合、パフォーマンスが低下する可能性があるため、これには注意する必要があります。
  3. 存在する機能を微調整します。存在するエンティティのチェックに時間がかかる場合は、テーブル全体をプルバックしてメモリに格納することを検討してください (それが途方もなく大きくないと仮定します)。これにより、8000 個の個別の選択ステートメントが削除されます。
  4. パフォーマンスを低下させる可能性のあるプラグインをオフにします。エンティティにプラグインが登録されている場合は、インポート中にプラグインを無効にするとパフォーマンスが向上するかどうかを確認してください。
  5. 追加のヘルプのために投稿されたコードを使用して、「挿入のパフォーマンスを向上させるにはどうすればよいですか」という新しい質問を作成します。
于 2013-01-10T14:33:55.810 に答える
3

私はCRM applicationあなたが参照しているものを使用していませんが、コードをバイパスすると、特定の制限をバイパスしたり、送信された特定の値に基づいてコードが設定したトリガーをバイパスしたりする可能性があります。

たとえば、コードを介して数値を送信した場合、その数値に対して数学関数を実行し、それを他の値に追加して、データベースに2つの値(入力した数値の1つの値と、別の値)を格納することになります。新しく追加されたものを含む合計を表します)。

したがって、1つの値をデータベースに直接挿入したばかりの場合、合計はそれで更新されません。

これは単なる架空のシナリオです。そのような問題や他の問題に遭遇することはないかもしれませんが、可能性はあります。

于 2013-01-10T06:04:45.597 に答える
3
于 2013-01-10T06:29:32.927 に答える