解决SqlTransaction用尽的问题(SQL处理超时)

  • Post author:
  • Post category:其他



原访问数据库的代码为:

1SqlConnection conn = new SqlConnection(strConn);

2conn.Open();

3SqlTransaction trans = conn.BeginTransaction();

4try

5{


6 CEngine.ExecuteNonQuery(trans,CommandType.Text,sql);

7 trans.Commit();

8}

9catch(SqlException ex)

10{


11 trans.Rollback();

12 ErrorCode = ex.Number;

13 Info = “数据操作失败:” ex.Message;

14}

15finally

16{


17 trans.Dispose();

18 conn.Close();

19}

20

21

22

运行时,一旦出现数据量过大或者处理时间较长,则系统会提示出错。错误提示为“SqlTransaction已经用完;它再也不能使用。”

开始时,我怀疑是跟内存有关。因为系统需要做好事务回滚的准备,每执行一条插入或修改的SQL,都要有一定的开销,数据量一大,恐怕就吃不消了。不过我查了一下SQL

SERVER的资料,未见提到内存的问题。

后来想到,数据库连接SqlTransaction有个时间问题。默认是15秒。数据量大的时候,这个时间很可能就不够了。于是改为:

1SqlConnection conn = new SqlConnection(strConn);

2conn.Open();

3SqlTransa



版权声明:本文为zongyue0810原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。