日期:2014-05-18  浏览次数:20992 次

求助 关于SQL SERVER 1205 号错误
所编写的库存管理软件已经运行了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   没有被执行。前边的两个更新操作已经更新到了数据库中。并且这个错误发生后数据库连接仍处于连接状态。

根据上边的现象,我感觉是网络的原因,可是换了网线之后,依旧会出现这个错误,各位高手,请帮帮忙吧!


------解决方案--------------------
你的事务你写在程序里的
还是调用存储过程,在过程里加事务控制?