在SQL Server Management Studio中,当我为SQL作业“查看历史记录”时,我只显示了作业的最后50次执行。
如何查看SQL作业自服务器上创建以来每次执行的完整日志?
答案 0 :(得分:38)
SQL Server作业系统限制每个作业和整个系统的作业历史记录条目总数。此信息存储在MSDB数据库中。
显然,您将无法返回并查看已丢弃的信息,但您可以更改 SQL Server代理属性并增加从现在开始记录的条目数上。
在SQL Server代理属性中:
它不会回复您的历史记录,但它将有助于您将来的查询!
答案 1 :(得分:4)
我非常确定作业历史存储在SQL Server本身的专用数据库中。如果是这种情况,您可以使用SQL Server Profiler拦截SQL Server Management Studio发送的SQL语句,并查找表的名称等。
答案 2 :(得分:3)
你的结果取决于几件事。
msdb.dbo.sp_purge_jobhistory
存储过程,该参数等于您选择的时间段。答案 3 :(得分:0)
您可以使用“临时表”更改数据保留。 Persisting job history in 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
),而不是每个作业/最大作业历史记录日志大小(行)的最大行数。