关于MSSQL数据库隔离级别-快照(SnapShot)

目录

在事务中将隔离级别设为SnapShot,可提升读写并发性能,防止脏读,这里简单介绍下设置使用方法

在单独事务中启用SNAPSHOT

不开启默认选项,但需要在单独的事务中使用快照,需要先开启一个数据库选项

  • 开启选项,允许快照隔离
  • SSMS操作
    资源管理器选中某数据库-属性-选项-允许快照隔离-True
  • T-SQL操作
ALTER DATABASE DBName SET ALLOW_SNAPSHOT_ISOLATION ON
  • 在事务操作前加SET TRAN ISOLATION LEVEL SNAPSHOT
  • 例子
SET TRAN ISOLATION LEVEL SNAPSHOT
 your transaction code

设置数据库默认为COMMITTED_SNAPSHOT

数据库默认级别设置后,事务前不用加Set语句就可以起到快照效果

  • SSMS设置
    资源管理器选中某数据库-属性-选项-读提交快照处于打开状态-True
  • T-SQL设置
 ALTER DATABASE DBName SET READ_COMMITTED_SNAPSHOT ON

查询数据库是否开启了相关设置

SELECT database_id,name
      ,snapshot_isolation_state    -- 1代表 允许快照隔离
	    ,is_read_committed_snapshot_on -- 1 代表 默认隔离级别为 Read Committed SnapShot
FROM sys.databases