背景:一个作业有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. [IT新应用]如何部署CITRIX 虚拟桌面

    1.搭建AD,并部署dhcp. 2.安装ddc服务器,加入域.这台服务器就是用来发布后端服务器或者WIN7的PC给用户使用.相当于调度. 3.安装windows server或者win7,用于发布给用 ...

  2. PHP 支持中文目录和文件的的遍历:文件编码转换

    在使用 readdir() 遍历指定目录时,使中文目录和文件名都正常显示需要使用 iconv() 进行文件编码转换: <?php header("Content-type:text/h ...

  3. Linux改变文件或目录的访问权限命令

    使用  ll  或  ls -l 指令时 第一列会显示出目录下文件的权限 例如∶ -rw-r-r- 横线代表空许可.r代表只读,w代表写,x代表可执行.注意这里共有10个位置.第一个字符指定了文件类型 ...

  4. python多线程使用

    内容链接: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00138683236 ...

  5. ecshop数据库操作函数

    ecshop数据库操作函数 分类: ecshop和dede2013-09-23 14:02 1716人阅读 评论(0) 收藏 举报 本章我们将结合eschop二次开发一些常见的开发例子.来谈谈ecsh ...

  6. Yii源码阅读笔记(十七)

    View.php,继承了component,用于渲染视图文件: namespace yii\base; use Yii; use yii\helpers\FileHelper; use yii\wid ...

  7. 20145235 《Java程序设计》第一次实验报告

    实验一Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验知识点 1.JVM.JRE.JDK的安装位置与区 ...

  8. toast 防止一直不停弹出,累积显示

    private Toast mToast = null; public void showTextToast(String msg) { if (mToast == null) { mToast = ...

  9. gtd好文两篇收藏

    http://www.jianshu.com/p/bf5e8a9761f5 http://blog.sina.com.cn/s/blog_4e0f66b80100m73i.html

  10. Mixing Delphi and C++(相互调用)

    Mixing Delphi and C++ You have a TStringList and <algorithm>. What can you do? Quite a lot, ac ...