相关疑难解决方法(0)

设置ALLOW_SNAPSHOT_ISOLATION的含义是什么?

我应该跑吗

ALTER DATABASE DbName SET ALLOW_SNAPSHOT_ISOLATION OFF
Run Code Online (Sandbox Code Playgroud)

如果暂时不使用快照事务(TX)隔离(iso)?
换一种说法,

  • 为什么要首先启用?
  • 为什么默认情况下不启用?

在SQL Server中启用(但暂时不使用)的成本是多少?


- 更新:
在数据库上启用快照TX iso级别不会将READ COMMITTED tx iso更改为默认值.
您可以通过运行来检查它:

use someDbName;
--( 1 )
alter database someDbName set allow_snapshot_isolation ON;
dbcc useroptions;
Run Code Online (Sandbox Code Playgroud)

最后一行显示当前会话的tx iso级别(读取已提交).

因此,启用快照tx iso级别而不更改它不会使用它等等.为了使用它,应该发布

--( 2 )
SET TRANSACTION ISOLATION LEVEL SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

Update2:
我重复[1]中的脚本但启用了SNAPSHOT(但没有打开)但没有启用READ_COMMITTED_SNAPSHOT

--with enabling allow_snapshot_isolation
alter database snapshottest set allow_snapshot_isolation ON

-- but without enabling read_committed_snapshot
--alter database snapshottest set read_committed_snapshot ON
-- OR with OFF
alter database snapshottest set read_committed_snapshot OFF 
go
Run Code Online (Sandbox Code Playgroud)

执行中没有结果/行 …

database sql-server concurrency performance database-design

16
推荐指数
1
解决办法
2万
查看次数