返回信息流本人为一个军队单位做一个监控软件(亚历山大),需要用到数据库sqlsever2000(数据库中的表格A用来记录日志,每天大概30万),之前运行了2年多,没出过什么大问题,只是数据量持续几个月后,软件起不来,这时只要truncate table A,清除一下那张表格即可。但后期用户让改成自动删除,于是就通过作业机制,每天一个时刻delete一下数据库中30天之前的数据(A中有一列是时间类型,因此可以直接通过语句删除)这样数据库只保存30天的数据,正常删除1次大概1分钟,但是程序跑大概20天-30天的时间就不能插入日志了(如果能插入,就会在界面显示,顺序是先插入后显示,而且也弹出过插入数据库失败的窗口,后来把这个弹出操作删除了),然后重启桌面右下角数据库服务时(有时服务都起不来)后再重启监控软件,问题依旧,只有重启计算机才会恢复正常。现在主要的疑惑如下:
1 因为一共5台监控,只有这2台各有1次刚才描述的现象。这两台都是开发版,其余是企业版。
2监控软件启动时是会连接数据库的,如果数据库真死了,启动不能成功,但现在是启动正常,但就是日志来了无法插入数据库。
3重启计算机就正常了,怎么解释。
4经过检查用户现场发现出现问题的时候就是定时删除那个时刻出现的。
比较肯定是当时数据库作业机制执行出现问题,因此数据库软件不能正常工作,但是什么原因引起的此问题,用debug,发现报出过通信链接失败和查询超时两种错误
现在搞得我都不敢用作业机制了,企业版的我也怕出问题,到底是什么原因,请大家帮忙分析一下,如果知道原因的更好
这是一条镜像帖。来源:北邮人论坛 / database / #9812同步于 2016/3/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
有关数据库作业机制
gatusokaka
2016/3/19镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
我代理中的语句是
delete from tablea where datediff(dd,LogTime,getdate())30,LogTime是日志中的时间字段,测试发现先向数据库中灌90天的日志,比如4月1日至7月1日,然后将本机时间改到5月1日,只运行代理中的作业,而无日志插入,发现在此情况下运行20-40天左右,sqlsever也会死,通过log explorer看是在删除23:59:xx秒时失败的,失败后马上回滚,从新将刚才删除的开始insert,究竟是什么原因导致删除失败的?
发自「贵邮」
sqlserver是正版的吗?
【 在 gatusokaka 的大作中提到: 】
: 我代理中的语句是
: delete from tablea where datediff(dd,LogTime,getdate())30,LogTime是日志中的时间字段,测试发现先向数据库中灌90天的日志,比如4月1日至7月1日,然后将本机时间改到5月1日,只运行代理中的作业,而无日志插入,发现在此情况下运行20-40天左右,sqlsever也会死,通过log explorer看是在删除23:59:xx秒时失败的,失败后马上回滚,从新将刚才删除的开始insert,究竟是什么原因导致删除失败的?
: 发自「贵邮」
不是,但也用了3年了
【 在 FromSixToTen (【意涵困】|【若晨困】|【贝由困】链域) 的大作中提到: 】
: sqlserver是正版的吗?
通过『我邮2.0』发布
盗版又不开源的东西谁能保证它没有bug,有个bug也不知道是哪里的问题。为何不用mysql替代呢。或者干脆用sqlite替代,删除时直接删除sqlite的文件。
【 在 gatusokaka 的大作中提到: 】
: 不是,但也用了3年了
:
: 通过『我邮2.0』发布