2012-05-10 15 views
1

SQL Serverプロパティのメモリ設定を低メモリに変更しました。また、バッファtempパスを自分のsystem.Butの特定の場所に変更しましたパッケージがメモリ不足のメッセージで失敗していますか?buffer tempとblob tempを設定した場合、データはそのtemp locationにスワップする必要がありますか?そうでない場合、バッファtempを使用していますか?ssisのバッファtempとblob tempの実際の使用方法

答えて

5

多少の関連性What is the default file path location for BufferTempStoragePath in SSIS 2005?特に、sqlエージェントサービスアカウントから、ディスク上のこれらの場所へのアクセシビリティに関して、bimonkeyのリンク先記事を読んでください。

一般的に言えば、パッケージでメモリが不足していると報告されているのは、fully blocking transformationsを使用しているためにルックアップタスクがあまりにも多くのデータを取り戻すためです。パッケージがブロック変換を頻繁に使用する場合は、作業をソースシステムに試してみてください。ルックアップが原因である場合は、クエリをさらに選択的にしてみてください。テーブル全体を引き戻さないで、必要な列だけを引っ張ってください。それが十分に選択的でない場合は、where句でデータセットをフィルタリングしてみることができます(私は現在の年のデータなどが必要です)。それに失敗した場合は、ルックアップをフルキャッシュモードから部分キャッシュまたはキャッシュなしに切り替えます。キャッシュを使用しないと、通過するすべての行についてソースシステムへの一回限りのクエリが行われます。 2行前とまったく同じクエリを実行したというメモリはありません。部分的なキャッシュは、X MBのデータをメモリに保持することによってそのジレンマを解決します。メモリ使用量を減らす方法の詳細については、パッケージのスクリーンショットを掲載してください。また、BufferTempStoragePathのような設定はデータフローごとに行われるため、パッケージに複数のデータフローがある場合は、それぞれを設定する必要があります。

データフローのアーキテクチャは、データがメモリバッファに読み込まれ、それらのバッファのアドレスがさまざまなタスクに渡されるようなアーキテクチャです。しかし、各タスクは、それらを通過するデータを保持するために多くのメモリを割り当てられている必要がありますが、それらはすべて同じ共有メモリセットで機能します。そのメモリをタスクからタスクにコピーするのは、メモリ消費の点では遅く、非常に高価です。

このプリアンブルでは、BufferTempStoragePath and BlobTempStoragePathとは何ですか?大きなオブジェクトタイプ(n/varchar(max)、xml、imageなど)をデータフローにプルすると、そのデータはではなく、はネイティブタイプのようなメモリバッファに保持されます。代わりにディスクに書き込まれ、そのアドレスへのポインタはメモリバッファに格納されます。 BufferTempStoragePathは、データフロータスクは、まだやるべき仕事があるときに使用されていますが、

  • はあまり(完全/部分的に変換を阻止する介して)エンジンが
  • 、それ以上にしようとしている得ることができないあなたの記憶を断片化しましいずれか1つのタスクであまりにも多くのことをやること。私の経験則では、パッケージ内のあらゆる変換からすべてのソースとデスティネーションまでの線をトレースできるはずです。インポート/エクスポートウィザードからパッケージを作成した場合、それらのデータフローは、無関係なものを単一のデータフローにグループ化してメモリが空いてしまうのが大好きなため、別々のフローに分割される主要な候補です。
  • このボックスには、データを実行するのに十分なリソースがありません。私は一般的に、仕事でハードウェアを投げたくないのが好きですが、最初の2つの弾丸に対処した場合、これは私のピストルの最後のものになります。
+0

ありがとうございました返信ありがとうございました。私はデータフロータスク内で1回のルックアップ変換(キャッシュモードなし)を使用しています。 – NikRED

関連する問題