2017-07-27 17 views
0

私は、ほぼ2年間実行しているSQL Serverジョブを持っています。成功するまでSQL Serverジョブを実行します。

接続を切断し続ける悪質なOracleデータベースに接続していますが、そのために常に失敗します。そして、10分か15分後にもう一度実行すると、正常に動作します。私は毎日それをチェックするのに飽きてきています...

成功するまでそのOracleソースに接続するためにジョブを実行させる方法、またはこのジョブの状態を調べる別のジョブが失敗した場合、成功するまでもう一度実行しますか?

+0

接続のトラブルシューティングを試みます。成功のためにジョブを何度も呼び出す場合は、それに応じて再試行を構成できます。 – TharunRaja

+0

接続不良の問題を解決しようとします。そのようにする必要はありません。他の解決策はちょうどハックと粘着性の石膏です。 – ADyson

+0

この手順の再試行と再試行の間隔を設定できます。詳しくは、こちらを参照してください。https://docs.microsoft.com/en-us/sql/ssms/agent/job-step-properties-new-job-step-advanced -ページ – sepupic

答えて

0

我々が使用しているソリューションは、このようなものです:

SSISパッケージにOracleのクエリをラップし、クエリの後、パッケージが処刑の歴史、または単にいずれかを保持するSQLテーブルを更新していジョブが正常に実行された最後の時刻を追跡する単一行。要するに、Oracleクエリが成功した場合、クエリが今日正常に実行されたことを示すテーブルに何かを挿入します。それが成功しなかった場合は、今日のためにテーブルに何も入れないでください。

次に、Oracleクエリーの前に、パッケージの開始時に、クエリーが今日正常に実行されたかどうかを確認します。すでに正常に実行されている場合は、何もせずにパッケージを終了します。それが今日正常に実行されていない場合は、上記のクエリー後の手順に従って、実行してみてください。パッケージがいつ実行されるべきかについての他の条件(「午前10時以降」など)がある場合は、そのロジックをここに含めます。

最後に、ジョブをスケジュールしてパッケージを呼び出し、15分ごとに実行するようスケジュールを設定します。それは正常に実行されるまで15分ごとに試行され、その後は翌日まで何もしなくなります。

この同じパッケージとジョブを使用して、同じ方法で処理するすべてのタスクを開始することができます。履歴/メタデータテーブルにこれらすべてのタスクに関するメタデータを保存するだけで済みます。

関連する問題