原来的隔离级别在dbcc useroptions时显示是read committed,但用Profile监控时发现,每次登录事件时,却运行的是
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ,程序中并没有作相关设置,其它库也不会有类似的情况发生,会是什么原因造成的呢?需要做些什么设置才能还原呢?
-----
我只有45分了,各位大虾能帮忙的话,有分的时候可以再加给你。

解决方案 »

  1.   

    dbcc useroptions 是返回的是当前链接的信息,这个read committed这只代表当前链接.
    不过默认隔离级别是read committed,出现SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
    lz应该是在哪做了设置.
      

  2.   

    没有刻意地去设置呢,奇怪的是某些用户登录时是read committed,有些又是SERIALIZABLE,如何可控制得一致呢。
      

  3.   

    请检查一下ADO.NET相关控件的所有属性,应该是有做特别的设置.
      

  4.   

    检查过GridView的相关属性,SqlHelper.cs数据库访问类,web.config,mechine.config,IIS设置,数据库服务器连接设置,数据库设置等地方,并无发现与设置隔离级别有关的一些部分。难道是Sql Server2005的默认行为?
    希望有人出来指点迷津。。
      

  5.   

    在SQL Server Management Studio里新建一个连线后查看是否是read committed的?如果是,那么应该是程序端设置的问题,控件很多属性的(代码的界面的),应该是哪个被改为非默认的.
      

  6.   

    msdn上说:
    一次只能设置选项中的一个,而且设置的选项将一直对那个连接保持有效,直到显式更改该选项为止。这是默认行为,除非在语句的 FROM 子句中在表级上指定优化选项
    SET TRANSACTION ISOLATION LEVEL 的设置是在执行或运行时设置,而不是在分析时设置。
    -------------------------------------
    所以应该不是默认行为。你用profile跟踪一下,是不是取数据的语句使用了优化选项,如select * from tb with(holdlock)