所编写的库存管理软件已经运行了2年多了,现在在操作员执行出库操作的时候会出现 1205 号错误,
数据库帮助关于1205号错误的描述:事务(进程 ID %1!)与另一个进程已被死锁在资源 {%2!} 上,且该事务已被选作死锁牺牲品。请重新运行该事务。
解释
当 Microsoft® SQL Server™ 遇到死锁时发生该错误。当两个(或多个)进程试图访问某个资源,而该资源上有另一个进程控制的锁时,发生死锁。因为每个进程都有对另一个资源的请求,所以各进程都不能完成。当检测到死锁时,SQL Server 将处理时间最少的命令回滚,并向客户端应用程序返回错误信息 1205。该错误不是严重错误,且不会导致批处理终止。
系统发生错误时候的状况很奇怪,没有进程处于死锁状态,并且错误发生之后,可以继续操作(但是前边的数据已经不对应)。
具体情况:
update (1)
......
update (2)
......
update (3)
if 更新出错 then
rollback;
错误提示
return
end if
update (4)
......
在第三个更新之后产生这个错误,但是rollback 没有被执行。前边的两个更新操作已经更新到了数据库中。并且这个错误发生后数据库连接仍处于连接状态。
根据上边的现象,我感觉是网络的原因,可是换了网线之后,依旧会出现这个错误,各位高手,请帮帮忙吧!
------解决方案--------------------
你的事务你写在程序里的
还是调用存储过程,在过程里加事务控制?