SSISパッケージ(SQLエージェントジョブを介して実行)によってストアドプロシージャが非常に遅く実行される非常に奇妙な問題に直面していますSSMSで手動で実行します。ストアドプロシージャSSIS経由で24,000%遅く実行する(SQLエージェントジョブ経由)SSS経由で手動で実行する
ジョブを実行するには約2時間かかります。手動で実行するにはわずか30秒かかります。
同じストアドプロシージャを実行し、同じサーバーで実行します。
これは、SSISパッケージ内の流れの構造である:
問題のストアドプロシージャの名前がBR_SHP_Timekeeper_Costs
です。
同じ名前を持つExecute SQL Task
がADO.NET connection manager
を使用して実行します。
EXEC BR_SHP_Timekeeper_Costs @p1, @p2
をあなたも見ることができるように、このタスクは、優先順位制約によって「連鎖」され、それは自分自身で実行されるように、すなわちしません他の仕事と競合する。
私が気づいたのは、(SQLエージェント経由で)パッケージの実行中に、そのタスクにヒットしたときに、アクティビティモニターでCXPACKET待機タイプが多数表示され、CPUが97〜99%を実行していたことでした。
- :
FYI、サーバはMAXDOP 8のvCPUが0に設定されており、並列処理のしきい値のコストは、これまで5
に設定されている、私が試してみました/調査/次を発見
あり、このストアドプロシージャのための唯一の1、キャッシュされた実行計画があり、それは(手動でストアドプロシージャを実行している)SSISとSSMSの両方で使用されているT-SQLを実行しているダミーのSQLエージェントジョブ作成さ
-
EXEC BR_SHP_Timekeeper_Costs
を。ジョブは〜30秒で完了しました。実行SQLタスクのみを含み、ADO.NET接続マネージャを使用して同じストアドプロシージャを実行するダミーSSISパッケージが作成されました。次に、新しいSQLエージェントジョブを介して実行します。 〜30秒で完了します。
他に何が確認できますか?
これはなぜ起こりますか?
はい、私はこれを行うことを計画しています@TheGameiswar – TheGameiswar
にStoredProc内のすべてのステートメントにオプション(MAXDOP 0)を設定してみてくださいともオプション(再コンパイル)を使用して、それを実行するのに役立ちますかどうかを確認。それでも、SSMSで手動で実行し、エージェントジョブ経由でダミーのSSISパッケージを実行しても、30秒後に戻ってくるのはなぜなのでしょうか?統計とは関係がありますか?実際のジョブが終了すると、関連するデータベースでsp_updatestatsが実行されます。 – TheGameiswar
以下のようにSSISであなたのストアドプロシージャを実行してみてください、それが – iKnowNothing