SQL Server Management Studioで、SQLジョブの「履歴を表示」すると、ジョブの最後の50回の実行のみが表示されます。
サーバー上で作成されたSQLジョブのすべての実行の完全なログを表示するにはどうすればよいですか?
SQL Serverジョブシステムは、ジョブごとおよびシステム全体にわたるジョブ履歴エントリの総数を制限します。この情報はMSDBデータベースに保存されます。
もちろん、戻って破棄された情報を表示することはできませんが、SQL Serverエージェントプロパティを変更して、今後記録されるエントリの数を増やすことができます。
SQL Serverエージェントのプロパティ:
履歴は返されませんが、今後のクエリには役立ちます。
ジョブ履歴は、SQL Server自体の専用データベースのどこかに保存されていると確信しています。この場合、SQL Server Profilerを使用して、SQL Server Management Studioから送信されたSQLステートメントをインターセプトし、テーブルの名前などを調べることができます。
あなたの結果はいくつかの事柄に依存します。
msdb.dbo.sp_purge_jobhistory
選択した期間に相当する「最も古い日付」パラメータを持つストアドプロシージャ。Temporal Tableを使用して、データの保持を変更できます。 Azure SQL Managed Instanceでのジョブ履歴の保持 :
ALTER TABLE [msdb].[dbo].[sysjobhistory]
ADD StartTime DATETIME2 NOT NULL DEFAULT ('19000101 00:00:00.0000000')
ALTER TABLE [msdb].[dbo].[sysjobhistory]
ADD EndTime DATETIME2 NOT NULL DEFAULT ('99991231 23:59:59.9999999')
ALTER TABLE [msdb].[dbo].[sysjobhistory]
ADD PERIOD FOR SYSTEM_TIME (StartTime, EndTime)
ALTER TABLE [msdb].[dbo].[sysjobhistory]
ADD CONSTRAINT PK_sysjobhistory PRIMARY KEY (instance_id, job_id, step_id)
ALTER TABLE [msdb].[dbo].[sysjobhistory]
SET(SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[sysjobhistoryall],
DATA_CONSISTENCY_CHECK = ON, HISTORY_RETENTION_PERIOD = 1 MONTH))
select * from msdb.dbo.sysjobhistoryall
このアプローチでは、保持期間を時間として定義できます(ここで1 MONTH
)ジョブあたりの最大行数/最大ジョブ履歴ログサイズ(行)の代わりに。