3

SSISスクリプトタスクを実行するだけのSSISパッケージがあります(私が書いたものではありません)。次に、このスクリプトは動的にパッケージを作成して実行し、アクティブなスレッド数を管理しながらスレッド形式で実行します。これは、SQL エージェントを使用して起動されます。これは、11g Oracle DB に対して Attunity ソースからデータを取得しています。

タスク マネージャでプロセスを監視すると、DTexec.exe がメモリを徐々に消費していることがわかります。約 250MB になると失敗します。毎回異なるエラーが返されることが多く、SQL エージェントからのキャンセル要求として表示されることもあります。

OSにより多くのメモリを与えるために最大メモリを減らしましたが、うまくいきませんでした。

64 ビットなので、memToLeave の問題ではないはずです。コマンドラインで実行しようとしましたが、何もありません。

Windows Server 2003 SQL 2008R2

私はこれに非常に苦労しており、ウェブで見つけることができるすべてを試しました. 誰にもアイデアはありますか?私はここに何かを忘れたと確信しているので、尋ねてください。あなたのために見つけます。

4

1 に答える 1

2

それで、私はそれを理解しました。

C#の記述方法には、作成中のスレッドを明示的に破棄するメカニズムはありませんが、これまで問題にならなかった理由は、スクリプトタスクがSSISパッケージ内にDLLを作成するためです。私の環境にはデフォルトで32ビットのランタイムがあり、そのように構築されています。SSISパッケージが32ビットモードで構築されている場合、256MBのハードRAM制限があり、64ビットにはそのような制限はありません。それで私は何をしなければなりませんでしたか?

サーバー自体のVisualStudioでパッケージを開き、保存します。これにより、64ビットモードでの再コンパイルが強制されます(そのサーバーのデフォルトの実行時間である場合)。

于 2012-04-18T15:14:22.023 に答える