我正在运行这个查询,
SELECT name
, snapshot_isolation_state
, is_read_committed_snapshot_on
FROM sys.databases s
name snapshot_isolation_state is_read_committed_snapshot_on
master 1 0
tempdb 0 0
model 0 0
msdb 1 0
MyDB1 1 1
MyDB2 1 1
MyDB1 和 MyDB2 已启用快照,但我的所有实体框架查询仍在使用,
select transaction_isolation_level from sys.dm_exec_requests
所有会话值transaction_isolation_level=2
均表示Read Committed
。我能做些什么?
由于
MyDB1
和MyDB2
hasREAD_COMMITTED_SNAPSHOT ON
,使用隔离级别的查询READ COMMITTED
将使用行版本控制而不是锁定来实现读取一致性。此行为类似于SNAPSHOT
隔离级别,但在语句级别而不是事务级别除外。如果这是您想要的行为,则无需采取任何操作。transaction_isolation_level
人们无法根据报告的值确定隔离级别sys.dm_exec_requests
是否READ COMMITTED
使用行版本控制或锁定。数据库
ALLOW_SNAPSHOT_ISOLATION
选项与此无关READ_COMMITTED_SNAPSHOT
并且可以独立切换。ALLOW_SNAPSHOT_ISOLATION
仅当您想要使用SNAPSHOT
显式的事务隔离级别时才需要设置SET TRANSACTION ISOLATION LEVEL SNAPSHOT
。