前不久系统服务器出现了一次不大不小事故,数据库一个表的数据不翼而飞,这个表虽然算不上顶级重要的表,但也算的上是个很重要的表,大家赶紧查是什么把这个表的数据删的只剩下180多条数据.为什么还有180多条数据存在哪?真是挺让人纳闷的,但发现这180多条数据中有一个共性,那就是那个不该为空的字段变成了空值.那就查吧,看那些存储过程这么霸道,竟如此不讲情面,最后查到那个罪魁祸首,那个存储写的太不规范了,要不也不至于把一个表的数据几乎删光,先将这个存储过程改掉,遏制住凶手,把这张表备份数据还原回来,使服务器端能正常工作.接下来我们部署相关的环境来查为什么表里会产生空值,用监视器跟踪,跟了几次几乎没发现问题,一切都那么正常(后来才知道监视器是监视不到触发器的动作的),最后不得不把监视器所有相关的语句拿到查询分析器里面走流程,经过几次测试,最后发现有些过程联合起来就会产生空值,而联合的过程正好在那个表里有触发器,问题终于找到了,将触发器屏蔽掉,联合测试一切正常.
原来触发器触发后会往一个表中增加记录,而这个表的id就是IDENTITY自动编号,而另外一个存储过程也要取IDE阅读全文>
发表于 @ 2007年08月10日 17:16:00|评论(loading...)|收藏