• 作业一直执行


    背景:一个作业有7个步骤,前面的步骤成功/失败都转到下一步,直至最后退出,作业计划是每天早上8点执行。步骤中的语句是例行检查脚本,之前的历史记录都是一分钟内完成。此次重启数据库服务器后,检查发现此作业在重启受影响范围内。查看作业历史记录,显示作业正在进行,持续时间为3天8小时43分钟,而且持续时间一直在增长。

    首先,怀疑步骤中的语句有问题,会不会是对大表进行操作(有死锁检查,不会堵这么久)?语句中有循环、waitfor关键字?查看第4步(前3步已执行成功),只是从ERRORLOG中取前一天登录失败的信息,然后邮件发送。
    其次,确认作业是否真正在运行。网上找了语句查看作业状态,根据返回结果及结果解释——作业已完成

    --获取作业状态
    Declare @Job_ID as UNIQUEIDENTIFIER
    select @Job_ID=Job_ID from msdb.dbo.sysjobs where name = 'DBA_backup_Full(00:00)'
    Exec master..sp_MSget_jobstate @Job_ID
    1-正在运行;4-表示完成(成功或失败)
    View Code

    但我看到历史记录中的正在进行,更相信作业还在运行。查看活动监视器,作业上次执行完成时间是3/22,计划下次执行时间3/27。历史记录表中,最后一次执行只有前3步的记录,sysjobactivity表中查询的结果如下:

    SQL Server代理服务每次重启后,将创建一个新的会话,并且 msdb.dbo.sysjobactivity 表由所有现有的已定义作业填充。session_id=3可以看出,重启前最后一次开始执行时间为2015-03-23 08:00,没有停止时间,表示作业一直在“运行”,也没有计划下次执行时间。2015-03-26 08:03完成重启,正常来说,此时已过了当天作业计划执行时间,所以此时,只看到计划下次执行时间为2015-03-27 08:00:00.000
    右击停止作业,报错说作业未运行,可是再次查看历史记录的时候,作业正在运行,持续时间进一步增大。

    尝试禁用作业,再开启作业依然无效。而且,在禁用的状态下,查看历史记录,GUI显示作业正在运行、持续时间继续增长。此时有点怀疑,GUI有问题。

    群友提出检查权限以及代理日志,查看了对应项,没有异常信息。比起最初想找到问题根源,现在更想尽快把作业给“停”下来,让它不要再“正在运行”。正准备把问题反馈到公司DBA组时,脑袋里一闪,右击停止作业报错,那右击开始作业步骤会怎样呢?反正也不是特别重要的作业,直接运行作业,意外地作业执行成功!再到历史记录下查看详细信息,显示作业执行成功,作业从第1步开始执行,用时仅用1秒钟!

    活动监视器下查看相应作业,显示上次完成时间为刚才执行的,msdb.dbo.sysjobactivity下的记录如下:

    重启后最后一次开始执行时间为2015-03-26 17:14:53,停止时间为2015-03-26 17:14:54,有相应的历史记录id。
    对于为什么会出现这种情况,自己也解释不了,稀里糊涂的碰到了,然后稀里糊涂的“解决”了,也许最开始就不是什么大问题,只是因为过于较真发现了这样一个现象。如果没有手动执行作业,也许查看历史记录,它会一直显示在运行,而上次完成时间永远定格在3/22。虽然没找到问题根源,但至少让作业能按计划预期执行。

  • 相关阅读:
    Hadoop2.x环境搭建
    HDFS序列化
    Hadoop2.x介绍
    eclipse(1)----ubuntu下的安装与配置
    hive与hbase
    mysql----启动报错
    序列化+protobuff+redis
    爬虫学习笔记(2)--创建scrapy项目&&css选择器
    日常随笔
    spark学习(2)--hadoop安装、配置
  • 原文地址:https://www.cnblogs.com/Uest/p/4370220.html
Copyright © 2020-2023  润新知