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

sql timeout问题,难!
我用ASP.net做了一个程序,数据库用的是SQl Server 2005,Sqltimeout时间设的是3000毫秒。

在用的人多的时候,经常会出现我一个事务中的数据库操作某些被提交了,某些没提交的现象,这个正常吗??

------解决方案--------------------
应该不正常吧。。顶一下。。
------解决方案--------------------
没用过,要不试下把时间设大点?
------解决方案--------------------
jf
------解决方案--------------------
探讨
问题是只要超时了,他会自动提交吗?

------解决方案--------------------
如果你果真出这个问题属实,你可以砸了微软公司!
------解决方案--------------------
你的sql语句在查询分析器要执行多久时间啊?看下这个时间是多少。然后再去查其它问题
------解决方案--------------------
```没有遇到过 顶哈
------解决方案--------------------
探讨
我用ASP.net做了一个程序,数据库用的是SQl Server 2005,Sqltimeout时间设的是3000毫秒。

在用的人多的时候,经常会出现我一个事务中的数据库操作某些被提交了,某些没提交的现象,这个正常吗??

------解决方案--------------------
不rollback的么?
------解决方案--------------------
事务要么全做,要么全不做

贴出你的代码来看看
------解决方案--------------------
楼主说的这种情况是不可能发生的。
解决办法:
1、你的事务代码逻辑关系是否正确
2、更新的是那个用户提交的,因为不一定是你认为的那个用户的事务提交上的。查看一下。是怎么提交上去的


------解决方案--------------------
使用锁机制和事务sqltransaction
Begin TRANSACTION 

Commit TRANSACTION 

ROLLBACK TRANSACTION 
或 
public void SqlTransactioin(string[] sqls) 

using(SqlConnection con = new SqlConnection("")) 

conn.Open(); 
SqlCommand comm = conn.CreateCommand(); 
SqlTransaction trans = conn.BeginTransaction(); 
comm.Transaction = trans; 
try 

foreach (string sql in sqls) 

comm.CommandText = sql; 
comm.ExecuteNonQuery(); 

trans.Commit(); 

catch (Exception ex) 

trans.Rollback(); 


conn.Close(); 


------解决方案--------------------
楼主是不是忘记了Commit() 及 Rollback() 啦?

------解决方案--------------------
Up
------解决方案--------------------
看你自己程序的逻辑,事务是否提交或者回滚。
------解决方案--------------------
不会,学习下
------解决方案--------------------
帮顶
------解决方案--------------------
你的sql 执行的时间长么?
------解决方案--------------------
up
------解决方案--------------------
你写的事务肯定是有问题的。这个东西比较难得写的。有些提交有些没有提交,那说明出现了异常。但是你的事务没有捕捉到。为什么没有捕捉到?答:因为你写错了。要好好参考一下范例