![SQL 代理历史记录设置未保存](https://linux22.com/image/531355/SQL%20%E4%BB%A3%E7%90%86%E5%8E%86%E5%8F%B2%E8%AE%B0%E5%BD%95%E8%AE%BE%E7%BD%AE%E6%9C%AA%E4%BF%9D%E5%AD%98.png)
我正在使用安装了 SQL 2K8 R2 的 Win 2K3 R2 + SP2。
我正在尝试设置 SQL Agent History 以保留 1 周的日志。因此,我这样做:连接后,我右键单击SQL Server 代理并选择特性。然后我选择历史。然后我观察到没有选中任何复选框。然后我选择第二个复选框(删除代理历史记录:)。并将周数的值更改为 1。然后单击好的。
之后我重新打开发现什么都没有改变。
如果这还不够的话,有时当我尝试查看某些特定作业的历史记录时它就会超时。
我感谢任何帮助。
感谢@Pradeep,我已经为我的日常维护工作添加了两个步骤,这是这些任务的脚本。
清除备份历史记录(优化备份速度)
declare @lastweek date;
select @lastweek = CONVERT(DATE,DATEADD(WEEK,-1,GETDATE()));
EXEC MSDB.DBO.SP_DELETE_BACKUPHISTORY @oldest_date = @lastweek;
为了清除工作历史记录,我必须使用光标。
declare @lastweek date
select @lastweek = CONVERT(DATE,DATEADD(WEEK,-1,GETDATE()));
DECLARE jobs_cursor CURSOR
FAST_FORWARD
FOR select job_id from msdb.dbo.sysjobs
DECLARE @job_id UNIQUEIDENTIFIER
OPEN jobs_cursor
FETCH NEXT FROM jobs_cursor INTO @job_id
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
EXEC msdb.dbo.sp_purge_jobhistory @job_id = @job_id, @oldest_date = @lastweek;
END
FETCH NEXT FROM jobs_cursor INTO @job_id
END
CLOSE jobs_cursor
DEALLOCATE jobs_cursor
GO
如果有人也需要这个,希望这会有所帮助。
答案1
这是一个 BUG,这在 MS Connect 上。我也能重现这种情况。选中复选框后,它会清除指定日期的数据,但该选项不会保持选中状态。因此,当您选择它并单击“确定”时,它只会清除一次数据。您可以安排一个作业,该作业将执行 sp_delete_backuphistory 和 sp_purge_jobhistory 作为解决方法。