SQL事件探查器不显示所有ADO.NET操作

时间:2013-01-04 15:59:47

标签: sql-server sql-server-2008 entity-framework ado.net sqlprofiler

我有以下代码创建可序列化的事务。该应用程序按预期工作:

using (var tx = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.Serializable, Timeout = new TimeSpan(0, 2, 0) }))
{
  // Modify database using EF.
  tx.Complete();
}

但是,对数据库进行分析会让我感到困惑。

// Start of transaction (and the first query). Login has invalid ISO LEV.
Audit Login       ... set transaction isolation level read committed ...
SQLTransaction    0 - Begin
RPC:Completed     exec sp_executesql N'SELECT TOP (1)... 

// Second query in transaction. Login now has valid ISO LEV.
Audit Logout
RPC:Completed     exec sp_reset_connection
Audit Login       ... set transaction isolation level read serializable ...
RPC:Completed     exec sp_executesql N'SELECT TOP (1)... 

因为我可以看到第一个查询IS实际上是在serializable下执行的(我可以从它获取的锁中推断出这一点),我可以得出的唯一理由是Audit Login只是在记录点时声明了SPID的ISO级别on, not 它正在改变它。

如果是这种情况,那么触发ISO更改的事件在哪里?我打开了所有活动,看不到任何东西......

1 个答案:

答案 0 :(得分:1)

更改事务隔离级别不是RPC:Completed事件。

仔细检查您是否正在监控SQL:BatchStartingSQL:BatchCompleted事件。