通过sql跟踪确定存储过程中的事务级别

时间:2009-07-27 13:30:19

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

我在我的asp.net应用程序中使用read committed transaction。

我怀疑,当我到达SQL Server读取时,不会使用。

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

3 个答案:

答案 0 :(得分:3)

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

我对此有点讽刺,因为我不知道为什么它会显示它的作用 - 这是默认的SQL行为,还是完全取决于进行连接的内容。这不会显示它是如何变化的,尽管通常的标准痕迹会 - 虽然为此筛选数千个事件可能是一个重大的痛苦。

答案 1 :(得分:2)

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

  1. 打开sql management studio
  2. 发出'begin trans'命令
  3. 将一些数据插入/更新到表
  4. 选择新插入/更新的数据,而不显式提交上述trans
  5. 在提交之前,您不应该看到新插入/更新的数据
  6. 这证明您使用读取提交的隔离级别

答案 2 :(得分:0)

如果您正在查看代码的特定部分并且可以稍微使用它,则可以通过在相关事务期间抛出DBCC USEROPTIONS进行测试 - 这将返回当前隔离级别值。如果您使用SET TRANSACTION ISOLATION LEVEL命令填充了一部分代码,这将非常有用 - 可以随意使用DBCC USEROPTIONS来查看从事务到事务的隔离级别。