当应用程序用SELECT向数据库中的某表查询数据时, SQL Server将查询结果返回给客户端, 如果结果很大的话, SQL Server中把一部分数据传给客户端, 剩余部分保存在SQL Server的缓冲区中, SQL Server将这一部分数据加锁, 如果对这一部分数据的修改请求来临时, 将会被挂起,直到缓冲区的数据全部发给客户端之后,修改操作才进行.解决办法:
第一种:利用程序控制SELECT查询语句返回数量.
第二种:查询结束后,利用循环,将结果集中的当前记录指针从第一个移到最后一个,从而保证程序从SQL Server中读出所有数据(即在SQL Server中不存在缓冲区).
第一种:利用程序控制SELECT查询语句返回数量.
第二种:查询结束后,利用循环,将结果集中的当前记录指针从第一个移到最后一个,从而保证程序从SQL Server中读出所有数据(即在SQL Server中不存在缓冲区).
为了避免死锁造成的损失,可以考虑使用sql server集群,当一台休克,
另一台挺住,可是可怜了公司的银子......
比如,循环内没有对记录进行movenext操作等…
sqlca.AutoCommit = TRUE