在我们的项目中,我们有两个 SQL Server 作业 - 一个在每天晚上 12 点运行(我们称之为“JobA”),另一个在每个月运行(每月 1 日 12 点运行。我们称之为“JobB”)。这些作业创建脚本于 4 月 8 日运行。
我们有一个日志表,记录了每次作业的成功运行(它还记录了执行过程中发生的失败)。当我检查日志时发现“JobA”从 4 月 9 日到 4 月 30 日成功运行。然后它从 5 月 3 日一直运行到现在。而“JobB”没有日志
我假设服务器会在 5 月 1 日和 5 月 2 日瘫痪,这就是为什么我在我们的日志数据库中看不到“JobB”的任何日志。
但我怎样证明这一点呢?
- 我可以使用工作中的任何属性来证明这一点吗?
- 我可以使用任何服务器日志来证明这一点吗?
请分享您的想法。
答案1
查找 SQL Server 的启动和关闭时间。
SELECT Create_Date,[Name] FROM sys.databases WHERE [Name]='tempdb'
SELECT Start_Time,Command FROM sys.dm_exec_requests WHERE Command IN ('LAZY WRITER','RESOURCE MONITOR')
SELECT Login_Time,LastWaitType FROM master..sysprocesses WHERE lastwaittype = 'LAZYWRITER_SLEEP'
默认情况下,错误日志位于 Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\LOG\ERRORLOG 和 ERRORLOG.n 文件中。通常,SQL Server 会保留前六个日志的备份,并为最新的日志备份提供扩展名 .1,为第二最新的日志备份提供扩展名 .2,依此类推。当前错误日志没有扩展名。
答案2
如果您有权访问服务器的事件日志,请检查该时间段内的活动,每天中午至少应该有一个记录系统正常运行时间的条目。同时检查 SQL 代理日志。
作业的属性也应该有上次执行的日期/时间,或者你可以
从 msdb.dbo.sysjobsteps 中选择 *
查看一些可能有帮助的信息