MSDBデータベースでSQL Serverエージェントジョブの結果を確認するクエリのヘルプが必要です。結合された選択でユニークな結果を返す
SELECT CONVERT(VARCHAR(30), Serverproperty('ServerName')),
a.run_status,
b.run_requested_date,
c.name,
CASE c.enabled
WHEN 1 THEN 'Enabled'
ELSE 'Disabled'
END,
CONVERT(VARCHAR(10), CONVERT(DATETIME, Rtrim(19000101))+(a.run_duration *
9 +
a.run_duration % 10000 * 6 + a.run_duration % 100 * 10)/216e4, 108),
b.next_scheduled_run_date
FROM (msdb.dbo.sysjobhistory a
LEFT JOIN msdb.dbo.sysjobactivity b
ON b.job_history_id = a.instance_id)
JOIN msdb.dbo.sysjobs c
ON b.job_id = c.job_id
ORDER BY c.name
これまでのところは良いが、それは彼らがクエリまで走った回数に応じて、同じジョブのためのいくつかの結果を返す実行している:私のクエリは次のようです。これは良いことではありません。仕事ごとに1つの結果しか得られず、最新のものだけが必要です。私は、文字列を追加する場合
: WHERE b.session_id =それはより良い動作しますが、それは唯一のsession_idパラメータに応じて、最新のジョブを一覧表示します (MAX msdb.dbo.sysjobactivityから(SESSION_ID)を選択します)。これにより、しばらく実行されていないジョブも除外され、うまくいかないジョブも除外されます。
誰かがこれを手伝ってくれますか? 私はDISTINCTやGROUP BYで試しましたが、動作させることができません。
どのSQL Serverのバージョンですか? (これは 'ROW_NUMBER()'が利用可能かどうかを決定します) – AakashM