SQL Server job突然不工作了

朋友负责的一个系统突然不工作了,让我帮忙查一下原因。结果我抓了一个Profiler Trace发现根本没有找到要执行的语句,后来从SQL Server job中发现了这个功能是在Job完成的。

这个Job本来是2分钟运行一次,但是发现已经很久没运行了,手动运行了一下是正常的,为什么突然不工作了?而且发现所有的JOB都没有正常工作。我查了一下JOBHistory发现记录竟然停在“14号”,而系统现在的时间是12号。原来这台机器被改过时间运行到14号,今天又改回到正常时间了。

原因:由于之前SQL Server计算的下次运行时间是在14号,而当前系统修改到正常时间后是12号,所以不会运行。用下面的代码查看了下次运行时间:

 

SELECT schedule_id,name, j.job_id,RIGHT('0'+CAST(next_run_time ASVARCHAR(6)),6)AS next_run_time,

 next_run_date

FROM sysjobschedules j

innerjoin sysjobs s on s.job_id =j.job_id

where name ='jobname'

或者:

sp_help_jobschedule  @job_name  ='jobname'

证实了Next Run Date14号的某个时间点。

解决办法:导出脚本,删除旧的JOB然后重建,之后正常工作。

目前还不知道有什么办法可以修改JOB下次运行时间(网上看到说用dbo.sp_sqlagent_notify可以,自己没有试过)。

 

本文转自 lzf328 51CTO博客,原文链接:

http://blog.51cto.com/lzf328/1347836

上一篇:MySQL之SQL优化实战记录


下一篇:SQL SERVER DBCC命令详解