この記事では、T-SQLを使用してSQLServerエージェントジョブに関連付けられているスケジュールを返すための4つのオプションを紹介します。
オプション
次のT-SQLオプションを使用して、SQLServerエージェントジョブのスケジュールを返すことができます。
- オプション1 :
sp_help_job
を実行します ストアドプロシージャ。 - オプション2 :
sp_help_schedule
を実行します ストアドプロシージャ。 - オプション3 :
sp_help_jobschedule
を実行します ストアドプロシージャ。 - オプション4 :
sysschedules
をクエリします テーブル(およびsysjobschedules
と結合します およびsysjobs_view
)。
これらのオプションはすべてmsdbにあります したがって、そのデータベースで実行する必要があります。 msdbに切り替えることでそれを行うことができます 最初にデータベースを作成するか、オブジェクトを適切に修飾します(例:msdb.dbo.sysschedules
。
オプション1:sp_help_job
ストアドプロシージャ
sp_help_job
を呼び出すとき 引数なしで、単にジョブのリストを返します。ただし、ジョブの名前またはIDを渡すと、スケジュールなど、そのジョブの詳細が一覧表示されます。
次に例を示します:
USE msdb;
EXEC sp_help_job
@job_name = 'SqlAgentTest';
結果:
これにより、ジョブ、およびジョブステップ、スケジュール、およびターゲットサーバーが一覧表示されます。この場合、ジョブには2つのスケジュールが関連付けられています。
IDを使用する場合のコードの例を次に示します。
EXEC sp_help_job
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
IDを使用する場合、必要に応じてパラメータ名を省略できます。
例:
EXEC sp_help_job '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8';
構文
sp_help_job
の完全な構文 このようになります:
sp_help_job { [ @job_id = ] job_id
[ @job_name = ] 'job_name' }
[ , [ @job_aspect = ] 'job_aspect' ]
[ , [ @job_type = ] 'job_type' ]
[ , [ @owner_login_name = ] 'login_name' ]
[ , [ @subsystem = ] 'subsystem' ]
[ , [ @category_name = ] 'category' ]
[ , [ @enabled = ] enabled ]
[ , [ @execution_status = ] status ]
[ , [ @date_comparator = ] 'date_comparison' ]
[ , [ @date_created = ] date_created ]
[ , [ @date_last_modified = ] date_modified ]
[ , [ @description = ] 'description_pattern' ]
sp_help_job
については、Microsoftのドキュメントを参照してください。 各パラメータの説明と、それぞれが受け入れる値について説明します。
オプション2:sp_help_schedule
ストアドプロシージャ
sp_help_schedule
ストアドプロシージャは、スケジュールを返すように特別に設計されています。
引数を渡さずに実行すると、インスタンス内のすべてのスケジュールが返されます:
EXEC sp_help_schedule;
特定のスケジュールの情報を取得するには、スケジュールの名前またはIDのいずれかを渡します。
EXEC sp_help_schedule
@schedule_name = 'Run_Sat_6AM';
sp_help_schedule
特定のジョブのスケジュールを返すのではなく、ジョブに関連付けられているスケジュールのみを返すために使用できます。
@attached_schedules_only
パラメータはビットです 、デフォルトは0
、これは、アタッチされたスケジュールとアタッチされていないスケジュールの両方を返すことを意味します。 1
の値を渡す 添付されたスケジュールのみに制限します。
例:
EXEC sp_help_schedule
@attached_schedules_only = 1;
もう1つできることは、@include_description
を使用することです。 結果セットにスケジュールの説明を含めるかどうかを指定するパラメーター。
sp_help_schedule
の使用を参照してください 詳細と例については、SQLServerを参照してください。
オプション3:sp_help_jobschedule
ストアドプロシージャ
sp_help_jobschedule
ストアドプロシージャは、ジョブのスケジューリングに関する情報を返します。
例:
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest';
これにより、指定したジョブに関連付けられているスケジュールのリストが返されます。
スケジュールのIDまたは名前を渡して、そのスケジュールだけを返すこともできます。
sp_help_jobschedule
を呼び出すとき 、ジョブ名またはそのID(両方ではない)、またはスケジュールIDのいずれかを指定する必要があります。 schedule_name
を渡すこともできます ただし、ジョブIDまたはその名前との組み合わせのみです。
受け入れられる引数の組み合わせは少し注意が必要です。 sp_help_jobschedule
の使用を参照してください 詳細な説明と例については、SQLServerを参照してください。
オプション4:sysschedules
テーブル(およびその他)
sysschedules
をクエリできます テーブルを作成し、sysjobschedules
などのテーブルと結合します およびsysjobs_view
ジョブとそれに関連するスケジュールのリストを返します。
例:
SELECT
jv.name,
jv.description,
s.schedule_id,
s.name,
s.freq_type,
s.freq_interval,
s.freq_subday_type,
s.freq_subday_interval,
js.next_run_date,
js.next_run_time
FROM msdb.dbo.sysjobs_view jv
INNER JOIN msdb.dbo.sysjobschedules js
ON jv.job_id = js.job_id
INNER JOIN msdb.dbo.sysschedules s
ON s.schedule_id = js.schedule_id
ORDER BY jv.name, s.name;
結果:
この場合、内部結合を使用して、関連するジョブを持つスケジュールのみを返し、その逆も同様です。
右結合に切り替えて、ジョブに関連付けられているかどうかに関係なくすべてのスケジュールを返すか、左結合に切り替えて、スケジュールが関連付けられているかどうかに関係なく、すべてのジョブを返すことができます。または、完全な結合を使用して、単にすべてを返すこともできます。