当应用程序用SELECT向数据库中的某表查询数据时, SQL Server将查询结果返回给客户端, 如果结果很大的话, SQL Server中把一部分数据传给客户端, 剩余部分保存在SQL Server的缓冲区中, SQL Server将这一部分数据加锁, 如果对这一部分数据的修改请求来临时, 将会被挂起,直到缓冲区的数据全部发给客户端之后,修改操作才进行.解决办法:
   第一种:利用程序控制SELECT查询语句返回数量.
   第二种:查询结束后,利用循环,将结果集中的当前记录指针从第一个移到最后一个,从而保证程序从SQL Server中读出所有数据(即在SQL Server中不存在缓冲区).

解决方案 »

  1.   

    要彻底解决死锁问题太难了,谁会谁的话m$早就把他藏起来了!
    为了避免死锁造成的损失,可以考虑使用sql server集群,当一台休克,
    另一台挺住,可是可怜了公司的银子......
      

  2.   

    资源占用完要将其释放,除死锁问题外,再查一下程序有没有死循环一类问题。
    比如,循环内没有对记录进行movenext操作等…
      

  3.   

    在提交上下功夫,实在不行设自动提交。
    sqlca.AutoCommit = TRUE