0

シナリオ:
X_source = N/A.
Y_source = SQL server 2008 R2.
Z_source = CRM 2011 database.

X_source一定の間隔での情報で毎日更新されるY_sourceがあります。その後Z_source、Y_sourceに接続し、その情報をアップロードする必要があります。XとYのソースを制御することはできませんが、それY_sourceがと同じネットワーク上にあることは知っていZ_sourceます。

問題:
200,000を超えるレコードがあることがわかっているので、Y_sourceすべてのレコードを呼び出してにアップロードすることはできませんZ_source。バッチまたは1つずつ繰り返すことができる方法を見つける必要があります。私が考えているのはT-SQLカーソルを使用することですが、これは間違ったアプローチのように見えるかもしれません。

出典:
YとZの両方のアドレスと資格情報を持っています。また、を制御できZ_sourceます。

Edit Okは、私が重要だと思ういくつかのことを明らかにさせてくれます。

  1. Z_source確かにCRM2011とは別のデータベースですが、そのソースの起源です。

  2. また、更新Z_sourceするプロセスはCRM 2011の外部プロセスである可能性があります。つまり、データベースが更新されている限り、CRMが更新をトリガーしたかどうかは関係ありません。

  3. 処理されるレコードの量は200,000をはるかに超えます。

4

3 に答える 3

1

あなたがSSISに慣れているかどうかはわかりませんが、それは本当にあなたを助けることができると思います!

これについての2つの素晴らしい投稿があります:http://gotcrm.blogspot.be/2012/07/crm-2011-data-import-export-using-cozy.htmlhttp://a33ik.blogspot.be/2012/02 /integrating-crm-2011-using-sql.html

よろしく、

ケビン

于 2012-08-01T13:24:19.653 に答える
1

私が思いついた解決策はY_source、データの取得に接続するC#コンソールアプリケーションを作成し、CRM 2011SDKでSdk/samplecode / cs / quickstartのクイックスタートアプリを使用して、に挿入するように変更することでしたZ_source。このアプリは、Y_sourceが更新されてから6時間後にWindowsタスクを介して実行されるため、正確なトリガーは必要ありません。

于 2012-08-06T14:34:49.147 に答える
0

いくつかのこと:

  1. CRM 2011のプラグインは、SQLトリガーに類似しています。、、、などのCRMイベントはCreate、プラグインで記述したコードの実行をトリガーします。CRMアクションとは独立してバッチで操作を実行したいので、これはあなたの状況には適切ではないようです。DeleteUpdateMerge

  2. CRM 2011では、セットベースのバッチでは何も実行されません。すべては一度に1つのデータベース行で実行されます。(これを証明するために、1つのセットで実行する必要があると思われるCRMイベントをプロファイリングし、結果のSQLを確認します。)ただし、CRM 2011がセットベースの操作を使用できないからといって、すべてを収集する必要があるわけではありません。 SQLServerのソースデータを一度に1行ずつ。

だから私は次のことをお勧めします:

  • SQLServerからすべてのデータを一度に取得するクイックアプリを作成します。結果を呼び出し.ToList()て、結果セットをメモリに配置します。
  • 行のリストをループし、それぞれについて、CRM 2011で適切なアクション(、、、CreateなどUpdate)を実行しDeleteます。
    • 行ごとに、その行の一意の識別子をCRMレコードに含めて、将来、と同期するときにレコードを削除するか更新するかを判断できるようにしY-Sourceます。
  • Y-Sourceが更新されるたびにアプリを実行するようにスケジュールします。

ニーズに応じて、アプリはSQL ServerでスケジュールまたはトリガーされるCLRストアドプロシージャ、サーバー上でスケジュールに従って実行されるコンソールアプリ、または上記を実行できるその他のものにすることができます。最近の質問「外部ツールを介したワークフローのスケジュール」もこれを物語っています。

于 2012-08-01T11:29:02.330 に答える