コンテキスト: SQLサーバー(2014)には、数百のストア番号の一意のリストを持つテーブルがあります。これらのストア番号に基づいてデータを取得し、このデータを別のSQLサーバー(2014)にダンプする必要があるDB2 LUWサーバーがあります。制限のため、ストア番号を25のグループにチャンクして、クエリを何度も実行する必要があります。オブジェクト変数をループするForeachループコンテナ付きのSSISパッケージ
SSISでこれを行うには、SQLストアドプロシージャを使用して一度に25個のストア番号を取り出し、一重引用符で囲んだカンマ区切りの文字列( '12345'、 '03884'など)に入れます。私はオブジェクト変数に格納します。次に、Foreachループコンテナを使用して、オブジェクト変数から文字列を取り出し、文字列変数に格納します。次に、DB2クエリを含む文字列変数があり、パラメータとしてストアリスト文字列変数が使用されます。
"select x, y, z from DB2SERVERTABLE where store_number in " + @[User::Store_List]
次に、別のExecute SQLタスクを使用して、そのクエリで変数を実行します。完全結果セットは別のオブジェクト変数に格納されます。結果をオブジェクト変数から取り出して他のSQLサーバーに挿入するには、別のFELCを使用して、変数マッピング・スクリーンを使用して各フィールドを文字列変数に格納する結果セットを反復処理します。 FELCの中には、SQLサーバーに変数を挿入する簡単な挿入ステートメントである、最後のSQL実行タスクがあります。
insert into table values (?,?,?);
これはどういうわけか、実際には動作します。
ザ・ハード(ソフト)ウェア:
- はVMWareのWindows 2012 R2サーバー64 -
- のIntel Xeon E5-4650 CPU 4コア2.69GHz @
- 32ギガバイトRAM(SQL Serverが27ギガバイトをコミットこれは本当に唯一の5ギガバイト...)
- のVisual Studio 2015
- SSDT 2015
- のDB2 LUW(わからないどのバージョン)
- のSQL Server 2014
問題:最終FELCと信じられないほど遅い実行して挿入します。私の最後のテストでは、DB2(〜95K行)から1つのストア番号のデータを取り出しました。 20分後には、SQLサーバーに40K行しか挿入されていませんでしたが、[進行状況]タブの行数を見ているうちに、プロセスが停止するまで遅くなり、処理が遅くなりました。この時点で、Visual Studioは〜3GBのRAMと50%のCPUを使用していました。 私は嵐の中でグーグルグーグルをしています。私は似たような状況の人を私に見つけることはできません。私は、スクリプトタスクを介してC#で多くの作業を行う方が良いかもしれないと思っています。コードに戻ってくる前に、誰かが問題を認識してくれることを期待しています。ありがとう!このステップのために