日期:2014-05-20  浏览次数:20785 次

大数据量进行事务处理的问题!!
问题是这样的     我做了一个添加记录的页面,使用事务完成数据的添加,但是在处理1000000条记录的添加或更新的时候   如果不等待页面返回成功(时间太长了)而关闭页面的话   就会出现在SQL企业管理器中无法打开表的情况。我想是不是事务处理的过程中锁了表,对ADO不是很了解   不过希望知道的朋友可以指导一下并给出一个解决的方法,我知道在SQL中可以设置锁的生存时间,但在ADO实现的事务中好像没有发现这东西。

------解决方案--------------------
原因有两种:

1、事务处理未提交Or 回滚
2、数据库连接锁定,这可以于数据库/SQL语句中设置什么时候加锁

具体视情况而定,查查资料


------解决方案--------------------
我的处理方式,给你供参考:
public static bool ExecuteCommand( OdbcConnection conn, String comm_text )
{
try
{
//加并发控制和锁

comm_text= " SET TRANSACTION ISOLATION LEVEL REPEATABLE READ BEGIN TRANSACTION "+
comm_text.ToString()+
" COMMIT TRANSACTION ";

if( conn.State != ConnectionState.Open )
conn.Open();

OdbcTransaction bdp_trans = conn.BeginTransaction();
OdbcCommand command = new OdbcCommand( comm_text, conn );
command.Transaction=bdp_trans;
command.ExecuteNonQuery();
bdp_trans.Commit();

conn.Close();
}
catch ( Exception e )
{
Console.WriteLine( "{0} Exception caught. ", e);
return false;
}

return true;
}