ジョブの調査をするのに便利です。
/*
--ジョブに関する情報を管理しているシステムテーブル
select * from msdb.dbo.SysJobs
select * from msdb.dbo.SysJobSteps
select * from msdb.dbo.SysJobSchedules
select * from msdb.dbo.SysSchedules
*/
SELECT
CASE WHEN st.[step_id] = 1 THEN j.name ELSE '' END as 'ジョブ名',
j.description as '説明',
CASE WHEN j.enabled=1 THEN N'有効' ELSE N'無効'END as 'ジョブ有効・無効',
s.name as 'スケジュール名',
CASE WHEN s.enabled=1 THEN N'有効' ELSE N'無効' END as 'スケジュール有効・無効',
CASE s.freq_type
WHEN 1 THEN N'1回のみ実行'
WHEN 4 THEN N'毎日(' + STR(s.freq_interval) + N'日ごと)'
WHEN 8 THEN N'毎週' +
CASE s.freq_interval
WHEN 1 THEN N'日' WHEN 2 THEN N'月' WHEN 4 THEN N'火'
WHEN 8 THEN N'水' WHEN 16 THEN N'木' WHEN 32 THEN N'金'
WHEN 64 THEN N'土'
END + N'曜日'
WHEN 16 THEN N'毎月(' + STR(s.freq_interval) + N'日)'
WHEN 32 THEN N'毎月' +
CASE s.freq_interval
WHEN 1 THEN N'日' WHEN 2 THEN N'月' WHEN 3 THEN N'火'
WHEN 4 THEN N'水' WHEN 5 THEN N'木' WHEN 6 THEN N'金'
WHEN 7 THEN N'土' WHEN 8 THEN N'毎' WHEN 9 THEN N'平'
WHEN 10 THEN N'土'
END + CASE WHEN s.freq_interval<8 THEN N'曜日' ELSE N'日' END
WHEN 64 THEN N'SQL Server エージェント サービスが開始されたときに実行'
WHEN 128 THEN N'コンピューターがアイドル状態のときに実行'
END as '実行間隔',
CASE WHEN s.freq_subday_type=1 THEN
(STUFF(STUFF(RIGHT('00000' + CAST(s.active_start_time AS VARCHAR(6)),6),3,0,':'),6,0,':'))
ELSE
STR(s.freq_subday_interval) +
CASE s.freq_subday_type
WHEN 2 THEN N'秒' WHEN 4 THEN N'分' WHEN 8 THEN N'時間'
END + 'ごと(' +
(STUFF(STUFF(RIGHT('00000' + CAST(s.active_start_time AS VARCHAR(6)),6),3,0,':'),6,0,':')) + '-' +
(STUFF(STUFF(RIGHT('00000' + CAST(s.active_end_time AS VARCHAR(6)),6),3,0,':'),6,0,':')) + ')'
END as '実行時間',
st.[step_id] as 'ステップID',
st.[step_name] as 'ステップ名',
st.[subsystem] as 'サブシステム',
st.[command] as '実行コマンド',
st.[database_name] as 'DB名'
FROM
msdb.dbo.SysJobs j LEFT JOIN
msdb.dbo.SysJobSchedules js ON j.job_id = js.job_id LEFT JOIN
msdb.dbo.SysSchedules s ON js.schedule_id = s.schedule_id LEFT JOIN
msdb.dbo.SysJobSteps st ON j.job_id = st.job_id
ORDER BY '実行時間','実行間隔',j.name,'ステップID'
;
コメント