在 SQL Server Management Studio 中,当我为 SQL 作业“查看历史记录”时,我只看到了该作业的最后 50 次执行。
自在服务器上创建以来,如何查看 SQL 作业的每次执行的完整日志?
在 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
使用“最旧日期”参数运行存储过程,该参数等于您选择的时间段。您可以使用临时表来更改数据的保留。在 Azure SQL 托管实例中保留作业历史记录:
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
),而不是每个作业的最大行数/最大作业历史日志大小(行)。