2012-05-11 14 views
1

私たちが抱えている問題にちょっとしたことがあったので、シナリオ、問題、私たちが試したことを説明するために最善を尽くしましょう。SQLサーバージョブを再起動するにはどうしたらいいですか?

  1. 我々は最後に上の追加日付でタグ付けされた特定のファイルにロギングしているSQLの仕事をしている
  2. 最初のステップは、私たちのログファイルは、例えば何であるかをチェックしますlog_01012012.log。これが間違っていると、sysjobstepsテーブルを更新して、すべてのステップの新しいファイルの場所(log_02012012.logなど)を取得しました。最初のジョブステップでストアドプロシージャを呼び出すことでこれを行います。
  3. これはテーブル内で更新されますが、残りのステップは古いログを使用し続けます。これは、このテーブルがジョブの開始時に一度しか読み込まれないためです。

私たちは、次のコードを使用してストアドプロシージャ内の仕事を再開しようとしている:それは私が推測するストアドプロシージャを(殺すよう私たちは仕事を殺すときしかし、それが表示されます

EXEC msdb.dbo.sp_stop_job @job_name = 'My Job' 
waitfor delay '00:00:15' 
EXEC msdb.dbo.sp_start_job @job_name = 'My Job' 

仕事の子供)、それは決してその仕事を再開するためのステップに達することを意味しません。

ジョブを再起動してsysjobstepsテーブルを再度参照し、ログの正しい場所を使用する方法はありますか?問題は、いくつかの点で仕事をリフレッシュすることができることジョブ自体

  • から仕事を再開することができること

    • だろう解決するかもしれません

      物事。

    私が明確にする必要があるものはすべて最善を尽くしますが、現在固まっており、すべての入力は非常に高く評価されます!

  • 答えて

    0

    (頻度スケジュールを定義し、ジョブを作成するジョブ

    1. を拡大
    2. は、ステップ(SPまたは単純なクエリ)を定義
    3. SSMS

      上のSQL Serverのエージェントに行きますまたはSQL Serverの再起動時にジョブを開始する)

    4. ジョブが完了したときに電子メールで通知するように設定する(succee /失敗した)

    これが役に立ちます。

    +0

    こんにちはRhianでは、定期的なスケジュールでジョブを実行する必要はありません。これは条件をチェックする最初のステップで、sysjobstepsテーブルが更新された場合は残りの手順で再起動する必要があります新しい値 – purchas

    0

    Service Brokerで何か面白いことができます。次のようなもの:

    1)ジョブの最後のステップとしてメッセージをブローカキューに入れます。コンテンツは空にすることができます。 「ちょっと...仕事を再提出する必要がある」と言うだけのトークンです。

    2)あなたがあなたの既存の手順でやっているように(遅延に入れ、キューの活性化ストアドプロシージャを記述)し、ジョブ

    または、あなたの代わりに、ログファイル名をハードコーディングを再送信ジョブステップ自体では、そのデータをどこかのテーブルに入れます。次に、場所を変更するステップでは、「次のステップに進む」として成功条件を定義し、「ステップ1に進む」として失敗条件を定義します。次に、エラーを返すようにファイルの場所を変更するコードを変更します(したがって、ジョブステップの失敗条件がトリガーされます)。

    関連する問題