大数据量进行事务处理的问题!!
问题是这样的 我做了一个添加记录的页面,使用事务完成数据的添加,但是在处理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;
}