私たちが抱えている問題に少し立ち往生しているので、シナリオ、問題、そして私たちが試したことを説明するために最善を尽くします。
- 末尾に日付が追加されたタグが付けられた特定のファイルにログを記録するSQLジョブがあります
- 最初のステップでは、ログファイルが何であるかを確認します(例:log_01012012.log)。これが正しくない場合は、テーブルsysjobstepsを更新して、すべてのステップの新しいファイルの場所(例:log_02012012.log)を設定します。これを行うには、最初のジョブステップでストアドプロシージャを呼び出します。
- これはテーブルで更新されますが、残りの手順では古いログが使用され続けます。これは、ジョブの開始時にこのテーブルが1回だけ読み取られると想定しているためです。
次のコードを使用して、ストアドプロシージャ内でジョブを再開しようとしました。
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テーブルを再度確認し、ログに正しい場所を使用する方法はありますか?
問題を解決するかもしれないものは
- ジョブ自体からジョブを再開できること
- いくつかの点で仕事をリフレッシュすることができる。
明確にする必要があることは何でも最善を尽くしますが、現在は行き詰まっており、すべての入力に大いに感謝します!