看看帮助里的Transaction.IsolationLevel的说明,可能会有帮助

解决方案 »

  1.   

    谢谢楼上的不过哭一下,我的MSDN怎么装都不好用,现在正在网上四处搜索中
      

  2.   

    SqlTransaction trans = con.BeginTransaction();
    trans.IsolationLevel = IsolationLevel.ReadUncommitted;
    ...试试
      

  3.   

    to  timmy3310(Tim) :
    试过了,没用,仍旧是超时我觉得好象和脏读没有关系,说明一下,我循环用的表是C,第一条插入语句是针对A,第二条插入多次的语句是针对B表三张表没有什么关系,所以觉得和脏读应该没有关系
      

  4.   

    谢谢  wangjs720(听雨舟)下载中,速度很快...
      

  5.   

    http://www.gbnis.com/read_file.asp?type_id=&id=3678&left=
      

  6.   

    string sqltemp = "一个从一张表选出所有记录,需要进行遍历的SQL"
    SqlCommand cmd = new SqlCommand(sqltemp,"另一个连接,初始化没问题");
    SqlDataReader dr = cmd.ExecuteReader();把这几句提前到另一个连接的开始前
      

  7.   

    谢谢snof(雪狼) 不过那文章里只是讲了一些基本的事务处理方式和概念这东西我还算明白,毕竟数据库玩了两年多了,我的代码也基本就是这个模式走下来的,我的问题在于,我用了两个连接,为什么在不加事务的时候运行正常,一旦加入事务处理,则出现超时这个超时会是由什么引起的?
      

  8.   

    to  dragontt(龙人) :
    没有理解你的意思,放到另一个连接前和放到这里有什么区别吗?另一个连接我用了一个成员变量(C++写多了),不知道合适不合适,构造里new的,析构里close的遍历的那个SQL就是建立在这个连接上的
      

  9.   

    因为你是使用两个连接操作的
    在另一个连接操作数据库,并且还没有提交Commit

    调用另一个连接的读方法
    就会出现这种读超时的问题你提前后
    读操作是在未开始事务前
    应该是可以的如果还是不行
    就是用SqlDataAdapter将数据读取到DataSet(本地内存中)
    应该就可以避免这个问题了
      

  10.   

    这次明白了觉得怪怪的,这样一来,同一个进程岂不是不能多开几个连接?我觉得一个进程里开一个读表的游标做循环,然后根据循环读到的数据去对另一张表做update或者insert是个很正常的操作,按这个说法,就变成了必须读到本地才能进行了,有点怪异先试试
      

  11.   

    因為基于不同的connection

    SqlTransaction trans = con.BeginTransaction();
    cmd_tran.Transaction = trans;
    后再定義一個trans1
    SqlTransaction trans1 = con.BeginTransaction();
    cmd.Transaction = trans1;
    對于cmd 和cmd_tran用不同的trans1 
    都成功時用
    trans.Commit();
    trans1.Commit();
    不成功時用
    trans.Rollback();
    trans1.Rollback();這樣是不是可以的啊!
      

  12.   

    同一个进程岂不是不能多开几个连接这到不是不行
    你不是也测试了
    如果取消事务
    你的代码就正常了吗关键还是在数据库处理事务的机制上
    在Sql Server上处理时
    就碰到这种问题至于其他数据库会不会出现
    我没试过
    就不清楚了
    :)