一个job运行问题的排查过程

今天产品线的一个同事过来,说在某台数据库服务器上有两个job似乎是死在那里了,几个小时了,看状态一直是Executing。这种Debug的事情肯定轮不到我这样的新手,但我站在manager的身后,大概学习了一下他的排查过程。

1.运行 sp_who2, 看看有没有什么其他的进程阻塞了这个job
结果:没有发现,甚至也没发现这个job和数据库服务器间的连接。(job本身是一个SSIS的应用,用来把数据从文件加载入数据库)

2.运行 dbcc opentran
可能是怕有事务的死锁之类的东西吧,反正也没有看出结果

3.dbcc imputbuffer(spid)
查了一下文档,才知道这是用来返回一个客户进程发送给一个sql server实例的最后一个语句

4.远程登录到数据库服务器上,查看 DTExec.exe 进程的资源占用情况
我们的数据库服务器是64位的,而这个命令是在64位机上部署或者运行SSIS包的工具,这里有一个简单的调用示例:
EXEC xp_cmdshell 'dtexec /f "C:\UpsertData.dtsx"'
结果:也没有太多发现

5.接下来就是仔细分析msdb里面的记录job执行情况的表
select * from sysjobhistory
select * from sysjobs
最后的结论是,发现这两个job在启动的时候,另外还有一个job也在启动。如上面所说,这些job都要运行ssis的包,需要适量内存;而在我们的数据库服务器上,我们给sql server所能使用的内存设置了一个最大值。这就可能出现一个情况,就是sql server把所有内存都吃掉了,导致ssis进程内存不足,所以就莫名死掉了。

当然,最后的结论比较牵强,也纯属推测,需要我们更改数据库服务器的最大内存使用量,然后再看看以后还会不会出现类似的错误...

转载于:https://www.cnblogs.com/xingyukun/archive/2008/03/27/1124740.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值