SQL Serverエージェントによって実行されているときに、一部のデータを処理するために作成したストアドプロシージャが正しく動作しないような問題があります。私は手動ですべてを正常に動作するジョブを実行する場合。私もエラーはありません。SQL ServerストアドプロシージャがSQL Serverエージェントによって実行されているときに動作しないようです
基本的なプロセスは、3つのソーステーブル(A、B、C)があり、それぞれ異なるサービスタイプ用です。それらは値を計算するために使用され、計算プロセスは毎年異なるため、複数の結果があるため、ID B43は2015年と2015年/ 16年の財務年度に対応する結果15と結果16を持ちます。最終結果は、ID、タイプ、および各レコードの両方の結果値を含むマスター表に保管されます。
この作業を行うために、最初に14/15計算、次に15/16計算を順番に実行する6つのストアドプロシージャがあります。
各ストアドプロシージャの一般的な構造は、データを取得し、マッピングテーブルに基づいて操作し、単にCalculationInputテーブルを作成することです。これが完了すると、実際の計算が行われ、その結果は一時テーブル#Results
に格納されます。 tempテーブルが構築された後、いくつかのインデックスを作成し、別のストアドプロシージャを呼び出して、会計年度をパラメータとして渡します。これはtempテーブルを取り、マスタテーブルに対して挿入更新を行います。その後、ストアドプロシージャが終了し、次のストアドプロシージャが呼び出されます。
StoredProcA15 -> InsUpdProc
StoredProcB15 -> InsUpdProc
StoredProcC15 -> InsUpdProc
StoredProcA16 -> InsUpdProc
StoredProcB16 -> InsUpdProc
StoredProcC16 -> InsUpdProc
私が以前に言ったように、私はジョブを右クリックして実行すると、これは完全にうまく動作します。しかし、私が1週間待ってマスターテーブルを見ると、ソーステーブルとCalculationInputテーブルにあるにもかかわらず、新しいレコードはそこにありません。私はその後、一時テーブルを構築するコードのセクションを実行すると、そこに結果が表示されます。
私は、失敗の原因を推測するには、挿入/更新プロシージャを呼び出す必要があります。 SQL Serverの並行性についてさらに詳しく知ることなく、親ストアドプロシージャが、挿入/更新プロシージャが終了して次のストアドプロシージャに移動する前に終了するのを待機していないかどうか疑問に思っています。
これは可能ですか?もしそうなら、それを修正する最良の方法は何ですか?
何[SQL Serverエージェントのエラーログ]について(https://msdn.microsoft.com/en-us/library/ms175488(V = SQL.105).aspxのを)支援を期待? –
エラーメッセージなし – Matt