首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

数据库超时导致 数据不完整-疑难有关问题

2012-10-07 
数据库超时导致 数据不完整---疑难问题我现在有个存储过程 在里面数据的数据比交多从A表查询一部分数据游

数据库超时导致 数据不完整---疑难问题
我现在有个存储过程 在里面数据的数据比交多 

从A表查询一部分数据
游标循环 (N个人) 在循环里面 
  第一步:把表A 查询出来的数据给第一个人 修改状态
  第二步:添加到表B里面  


但是 经常在 第一步执行完了后 超时。

  导致数据没有添加到B表中 但是A表的状态已经修改了 。 

查数据就不对  


各位大哥有什么好的解决方法吗?  

能不能在循环里面添加一个事务? 但是超时了 事务会不会起作用啊???

[解决办法]
这个可以考虑加锁来实现,参考如下:

SQL code
1 如何锁一个表的某一行A 连接中执行SET TRANSACTION ISOLATION LEVEL REPEATABLE READbegin transelect * from tablename with (rowlock) where id=3waitfor delay '00:00:05'commit tranB连接中如果执行update tablename set colname='10' where id=3 --则要等待5秒update tablename set colname='10' where id<>3 --可立即执行2 锁定数据库的一个表SELECT * FROM table WITH (HOLDLOCK) 注意: 锁定数据库的一个表的区别SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除SELECT * FROM table WITH (TABLOCKX) 其他事务不能读取表,更新和删除
[解决办法]
超时了是个现象,事务是否回滚或完成跟结果有关。


[解决办法]
优化一下语句!

热点排行