【问题标题】:determining transaction level in stored procedures via sql trace通过 sql 跟踪确定存储过程中的事务级别
【发布时间】:2009-07-27 13:30:18
【问题描述】:

我在我的 asp.net 应用程序中使用已提交的读取事务。

我怀疑当我到达 SQL Server 时,读取已提交并没有被使用。

有没有办法通过 SQL 跟踪来确定事务的隔离级别是什么。我只能看到BEGIN TRANSACTION

【问题讨论】:

    标签: asp.net sql-server ado.net


    【解决方案1】:

    您可以通过 Profiler 检查的一件事是登录时设置的隔离级别。跟踪“审核登录”事件并包含 TextData 列;这将显示一堆 o' 东西,其中包括隔离级别。

    我对此有点漫不经心,因为我不知道它为什么会显示它的作用——要么这是默认的 SQL 行为,要么完全取决于建立连接的任何东西。这不会显示它是如何变化的,尽管通常的语句跟踪会 - 尽管为此筛选数千个事件可能会很痛苦。

    【讨论】:

      【解决方案2】:

      我不确定通过探查器是否可行。 但是,您可以尝试以下方法...

      1. 打开sql管理工作室
      2. 发出“开始传输”命令
      3. 向表中插入/更新一些数据
      4. 选择新插入/更新的数据而不显式提交上述trans
      5. 在提交新插入/更新的数据之前,您应该看不到它们
      6. 这证明你使用了读提交的隔离级别

      【讨论】:

        【解决方案3】:

        如果您正在查看代码的特定部分并且可以稍微使用它,您可以通过在相关事务期间抛出 DBCC USEROPTIONS 来进行测试 - 这将返回当前的隔离级别值。如果您有一部分代码散布着 SET TRANSACTION ISOLATION LEVEL 命令,这将很有帮助 - 随意使用 DBCC USEROPTIONS 以查看您的隔离级别是如何在事务之间设置的。

        【讨论】:

          猜你喜欢
          • 2011-11-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多