2012-02-10 15 views
0

Active Directoryからレコードセットにデータを抽出するためのVBScriptを作成しました。私は今、最も効率的な方法がSQLデータベースにデータを転送することであるか疑問に思っています。VBScriptを使用してActive DirectoryをSQLデータベースに抽出する

私は、その後、メモリ内のデータセットを反復処理し、SQLデータベースに3000+ INSERTコマンドを送信し、VBScriptの内...

  • それをインポートしたりするSSISパッケージを発射Excelファイルに書き込む

    後者のオプションでは、3000以上の往復でデータベースと通信するため、2つのオプションの方が遅くなりますか?

  • +1

    をカバーポストを持っているがCSVにそれを書きます。 – Fionnuala

    答えて

    2

    行ごとに挿入を送信することは、常に最も遅いオプションです。これは、Agonizing RowまたはRBARと呼ばれるものです。可能な場合はそれを避け、セットベースの操作を利用する必要があります。

    このオプションを選択する場合は、中間ファイルへの書き込みは良いオプションです。私は@Remouと、ExcelではなくCSVを選択する必要があるという意見に同意します。

    私は3番目のオプションを提案します。あなたはすでにあなたのVBscriptに含まれているVBのデザインを持っています。これをSSISのスクリプトコンポーネントに簡単に変換できるはずです。 SSISパッケージを作成し、DataFlowタスクを追加し、フローにスクリプトコンポーネント(as a datasource {example here})を追加し、フィールドを出力バッファに書き込んだ後、SQL宛先を追加し、中間ファイルに書き込む手順を保存します。これは、処理中のどこでもプレーンテキストでディスク上にADデータを持たないため、より安全です。

    0

    この実行頻度、または特定の時間枠内で実行する必要がある場合は言及していないため、ここでもパフォーマンスが問題であるとはっきりしません。 「遅い」とは、それだけでは意味がありません。時間窓が1時間の場合、30分間実行されるプロセスは完全に許容されます。

    あなたは仕事を終えてそこから行くことができる、最も簡単でメンテナンス可能なコードを書いてください。それが許容時間内に実行されている場合、あなたは完了です。そうでない場合は、少なくとも、プロファイリングと最適化が可能なクリーンで機能的なソリューションがあります。

    関連する問題