【发布时间】:2011-10-13 12:49:18
【问题描述】:
在 SQL Server Management Studio 中,当我为 SQL 作业“查看历史记录”时,我只看到了该作业的最后 50 次执行。
如何查看自 SQL 作业在服务器上创建以来每次执行的完整日志?
【问题讨论】:
标签: sql-server ssms history sql-job sql-agent
在 SQL Server Management Studio 中,当我为 SQL 作业“查看历史记录”时,我只看到了该作业的最后 50 次执行。
如何查看自 SQL 作业在服务器上创建以来每次执行的完整日志?
【问题讨论】:
标签: sql-server ssms history sql-job sql-agent
SQL Server 作业系统限制每个作业和整个系统的作业历史记录条目总数。此信息存储在 MSDB 数据库中。
显然,您将无法返回查看已丢弃的信息,但您可以更改 SQL Server 代理 属性并增加从现在开始记录的条目数开。
在 SQL Server 代理属性中:
它不会返回您的历史记录,但会对您未来的查询有所帮助!
【讨论】:
我很确定作业历史存储在 SQL Server 本身的专用数据库中的某个位置。如果是这种情况,您可以使用 SQL Server Profiler 来拦截 SQL Server Management Studio 发送的 SQL 语句并找出表名等。
【讨论】:
您的结果取决于几件事。
msdb.dbo.sp_purge_jobhistory 存储过程,该参数等于您选择的时间段。【讨论】:
您可以使用临时表来更改数据的保留。 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),而不是每个作业的最大行数/最大作业历史日志大小(行)。
【讨论】: