设置快照隔离不反映

Kri*_*hna 4 sql sql-server database-administration sql-server-2008

当我运行时 - SET TRANSACTION ISOLATION LEVEL SNAPSHOT -Command 成功执行但以下查询返回:

SELECT is_read_committed_snapshot_on,
       snapshot_isolation_state_desc,
       snapshot_isolation_state
FROM   sys.databases
WHERE  name = 'MyDB' 
Run Code Online (Sandbox Code Playgroud)

输出:

is_read_committed_snapshot_on   0
snapshot_isolation_state_desc   OFF 
snapshot_isolation_state        0
Run Code Online (Sandbox Code Playgroud)

你能告诉我为什么 set transction 命令没有反映吗?另外,我假设ALLOW_SNAPSHOT_ISOLATION已经“打开”,因为我的“ SET TRANSACTION ISOLATION LEVEL SNAPSHOT”命令成功运行。这是正确的吗?

Mar*_*ith 10

该数据库没有启用快照隔离。

如果您尝试然后对该数据库运行查询,您将收到该消息。

快照隔离事务访问数据库“MyDB”失败,因为此数据库中不允许快照隔离。使用 ALTER DATABASE 允许快照隔离。

要启用它,您需要运行

ALTER DATABASE MyDB SET ALLOW_SNAPSHOT_ISOLATION ON;
Run Code Online (Sandbox Code Playgroud)