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

首先,怀疑步骤中的语句有问题,会不会是对大表进行操作(有死锁检查,不会堵这么久)?语句中有循环、waitfor关键字?查看第4步(前3步已执行成功),只是从ERRORLOG中取前一天登录失败的信息,然后邮件发送。
其次,确认作业是否真正在运行。网上找了语句查看作业状态,根据返回结果及结果解释——作业已完成。但我看到历史记录中的正在进行,更相信作业还在运行。查看活动监视器,作业上次执行完成时间是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。虽然没找到问题根源,但至少让作业能按计划预期执行。

作业一直"执行"的更多相关文章

  1. Map/Reduce 工作机制分析 --- 作业的执行流程

    前言 从运行我们的 Map/Reduce 程序,到结果的提交,Hadoop 平台其实做了很多事情. 那么 Hadoop 平台到底做了什么事情,让 Map/Reduce 程序可以如此 "轻易& ...

  2. 通过MSSQl作业定时执行批处理BAT文件

    前言 有些时候,我们可能会需要定时执行一下批处理来达到一定的目的,比如Oracle数据库的定时备份,当然Oracle也可以通过Rman实现定时备份.我们大多数的时候是通过操作系统的计划任务实现定时执行 ...

  3. 第九篇:Map/Reduce 工作机制分析 - 作业的执行流程

    前言 从运行我们的 Map/Reduce 程序,到结果的提交,Hadoop 平台其实做了很多事情. 那么 Hadoop 平台到底做了什么事情,让 Map/Reduce 程序可以如此 "轻易& ...

  4. shell作业后台执行的方法

    来思考几种场景: 1.某个脚本需要执行时间比较长,无人值守,可能执行过程中因ssh会话超时而中断? 2.某次测试一段代码,需要临时放入后台运行? 3.放入后台运行的脚本,需要在一段时间后重新调到前台? ...

  5. SQL Server作业没有执行的解决方法

    SQL Server作业没有执行的解决方法  确保SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行    设置方法:  我的电脑--控制面板--管理工具--服务--右键 SQLSE ...

  6. MapReduce作业的执行流程

    MapReduce任务执行总流程 一个MapReduce作业的执行流程是:代码编写 -> 作业配置 -> 作业提交 -> Map任务的分配和执行 -> 处理中间结果 -> ...

  7. crontab设置作业间隔执行问题

    这个源于有个网友问,crontab里   */40  9  *  *  *  是不是代表9点开始每40分钟执行?  直觉这个肯定不是从9:00开始每隔40分钟执行一次,但是也不能肯定它代表一个什么样的 ...

  8. 使用SQL Server2014作业定时执行无参的存储过程

    一.存储过程 1.新建存储过程 按照下图找到存储过程,右键“新建”选择”存储过程” 此时在右侧会打开一个窗口,如下图. 2.填写创建存储过程语句 填写存储过程名称,因为是无参的存储过程,所以把参数部分 ...

  9. sql创建作业--自动执行存储过程

    创建自动执行存储过程: 1.创建参数 2.删除已有同名的作业 3. 创建作业 4.创建作业步骤 5.连接服务器 6.创建作业调度 7.启动作业 ALTER PROCEDURE dbo.sx_pro_A ...

随机推荐

  1. OpenStack手动从数据库中删除实例 - ugyn109的专栏 - 博客频道 - CSDN.NET

    由于某种原因我将OpenStack的一个计算节点移除了,但移除前并没有删除在其上运行的实例,后来想通过dash删除这些实例,于是N天过去了,我的dash还显示如下内容:很碍眼是不是?于是我打算手动从数 ...

  2. Mongodb 创建索引

    db.getCollection('ct_project').ensureIndex({'pro_code':1})  创建索引 db.getCollection('ct_project').ensu ...

  3. mysql主从复制 主主复制 读写分离

    首先是mysql的主从复制很简单 主主复制也就是互相主从最麻烦的最难的就是日志恢复,增量恢复什么的比较复杂 首先如果你不会安装mysql版本最好一样,或者往上的版本,因为mysql是向下兼容 请注意不 ...

  4. 使用HIBERNATE的SQL查询并将结果集自动转换成POJO

    在某些场合下,我们可能想使用HIBERNATE的框架提供的SQL查询接口,但是,由于实体没有做映射,HIBERNATE不能把结果集转换成你想要的List<POJO>,本文讨论如何在这种情况 ...

  5. 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)

    最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...

  6. [英语学习]国外的在线广播网站,类似喜马拉雅和荔枝FM

    今天在Seattle Art  Museum 网站上看东西,发现了这个好网站. 主要是外文资料,可以练听力,也可以找到<我爱吕西安>的英文版本. https://soundcloud.co ...

  7. A trip through the Graphics Pipeline 2011_04

    Welcome back. Last part was about vertex shaders, with some coverage of GPU shader units in general. ...

  8. 返回指定的VC

    for (UIViewController *controller in self.navigationController.viewControllers) {            if ([co ...

  9. Sign-Magnitude Representation

    COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION There are several alt ...

  10. Bluetooth Baseband介绍

    目录 1. 概述 1.1 Clock(时钟) 1.2 寻址方式 2. 物理信道(Physical Channels) 3. 物理链路(Physical Links) 4. 逻辑传输层(Logical ...