作业一直"执行"
背景:一个作业有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。虽然没找到问题根源,但至少让作业能按计划预期执行。
作业一直"执行"的更多相关文章
- Map/Reduce 工作机制分析 --- 作业的执行流程
前言 从运行我们的 Map/Reduce 程序,到结果的提交,Hadoop 平台其实做了很多事情. 那么 Hadoop 平台到底做了什么事情,让 Map/Reduce 程序可以如此 "轻易& ...
- 通过MSSQl作业定时执行批处理BAT文件
前言 有些时候,我们可能会需要定时执行一下批处理来达到一定的目的,比如Oracle数据库的定时备份,当然Oracle也可以通过Rman实现定时备份.我们大多数的时候是通过操作系统的计划任务实现定时执行 ...
- 第九篇:Map/Reduce 工作机制分析 - 作业的执行流程
前言 从运行我们的 Map/Reduce 程序,到结果的提交,Hadoop 平台其实做了很多事情. 那么 Hadoop 平台到底做了什么事情,让 Map/Reduce 程序可以如此 "轻易& ...
- shell作业后台执行的方法
来思考几种场景: 1.某个脚本需要执行时间比较长,无人值守,可能执行过程中因ssh会话超时而中断? 2.某次测试一段代码,需要临时放入后台运行? 3.放入后台运行的脚本,需要在一段时间后重新调到前台? ...
- SQL Server作业没有执行的解决方法
SQL Server作业没有执行的解决方法 确保SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法: 我的电脑--控制面板--管理工具--服务--右键 SQLSE ...
- MapReduce作业的执行流程
MapReduce任务执行总流程 一个MapReduce作业的执行流程是:代码编写 -> 作业配置 -> 作业提交 -> Map任务的分配和执行 -> 处理中间结果 -> ...
- crontab设置作业间隔执行问题
这个源于有个网友问,crontab里 */40 9 * * * 是不是代表9点开始每40分钟执行? 直觉这个肯定不是从9:00开始每隔40分钟执行一次,但是也不能肯定它代表一个什么样的 ...
- 使用SQL Server2014作业定时执行无参的存储过程
一.存储过程 1.新建存储过程 按照下图找到存储过程,右键“新建”选择”存储过程” 此时在右侧会打开一个窗口,如下图. 2.填写创建存储过程语句 填写存储过程名称,因为是无参的存储过程,所以把参数部分 ...
- sql创建作业--自动执行存储过程
创建自动执行存储过程: 1.创建参数 2.删除已有同名的作业 3. 创建作业 4.创建作业步骤 5.连接服务器 6.创建作业调度 7.启动作业 ALTER PROCEDURE dbo.sx_pro_A ...
随机推荐
- elFinder的使用并整合ckeditor
具体实现访问: 白乔大神资源:https://github.com/bluejoe2008/elfinder-2.x-servlet 本人oschina的库:https://git.oschina.n ...
- Java表单类双击提交
双击制御 有些时候一些操作会非常的耗费时间(Long Lived Operation),例如这个数据库的导出,表表生成等.有些时候程序的使用者看到很长时间服务器 没有反应,倾向于多次点击提交按钮.这样 ...
- html5shiv.js-让IE浏览器支持HTML5标准
兼容性IE8及以下IE版本 浏览器IE8及以下IE版本对HTML5标签的支持是有限的,我们可以通过在网页中添加脚本的方式来解决目前IE浏览器对HTML5支持的问题. <!–[if IE]> ...
- hdu1272 并查集
如果要输出yes 需要满足 1 这个图连通 2 没有回路 3 0 0 也是yes 看它有没有回路 在un的时候做一次判断就可以了 然后是判断连通 在这里采用的方法是扫一遍 如果这个点出现过就判断 ...
- SQL--查询相同字段的数据
select city, statefrom state_county_citywhere city in (select city from state_county_city group by c ...
- ORACLE的安装与网页版创建表空间的简单操作以及PLsql的简单操作
1.oracle的安装: 安装简单易学,在这里不做解释.下载看装包后耐心等待,注意安装目录不要有中文字符,尽量按照指定目录进行安装.安装完成后会占用有大约5g的内存. 如果要卸载oracle,需要用其 ...
- 在Delphi中如何动态创建dbf数据库(二)?
unit Form_ToChangCSVforDBFU; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics ...
- Finally 与 return
网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下fina ...
- php配置相关
php.ini error_reporting //配置错误的显示方式 display_errors //此项优先级高于error_reporting,如果关闭该项,会返还http状态码,如果开启,则 ...
- WAMP数据库环境搭建
php.ini: date.timezone = Etc/GMT-8//设置北京时间 my.ini: character_set_server=utf8//设置utf8 innodb_force_re ...