如何在SQL Server 2008 R2中全局设置READ UNCOMMITTED事务隔离级别
SQL Server 2008 R2全局设置READ UNCOMMITTED隔离级别操作指南
1. 全局配置项说明
SQL Server 2008 R2支持服务器实例级的全局事务隔离级别默认配置,所有新建立的连接默认会继承该配置;暂不支持原生的单数据库级默认隔离级别配置,可通过登录触发器实现单库级别的默认隔离级别设置。
2. 具体操作步骤
方法1:服务器实例级全局配置(所有新连接默认生效)
通过系统存储过程sp_configure修改实例级user options参数实现:
- 第一步:开启高级选项配置
sp_configure 'show advanced options', 1; RECONFIGURE; GO
- 第二步:修改默认隔离级别为READ UNCOMMITTED(对应参数位掩码值为1)
sp_configure 'user options', 1; RECONFIGURE; GO
- 第三步:重启SQL Server服务,配置即可生效。
说明:该配置生效后,所有新建立的连接默认使用READ UNCOMMITTED隔离级别,连接可主动执行隔离级别修改语句覆盖全局默认配置。
方法2:单数据库级默认配置(仅指定数据库的新连接生效)
SQL Server 2008 R2无原生单库默认隔离级别配置项,可通过登录触发器实现:
CREATE TRIGGER [SetTargetDBIsolationLevel] ON ALL SERVER FOR LOGON AS BEGIN -- 替换为你需要设置的目标数据库名称 IF ORIGINAL_DB_NAME() = N'你的目标数据库名' BEGIN SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; END END; GO -- 启用触发器 ENABLE TRIGGER [SetTargetDBIsolationLevel] ON ALL SERVER; GO
注意:修改登录触发器前请提前做好测试,避免触发器逻辑异常导致所有账号无法登录的问题。
3. 配置验证
执行以下SQL查询当前连接的事务隔离级别,返回值为1即代表配置生效:
SELECT transaction_isolation_level FROM sys.dm_exec_sessions WHERE session_id = @@SPID;
返回值对应关系:1=READ UNCOMMITTED、2=READ COMMITTED、3=REPEATABLE READ、4=SERIALIZABLE、5=SNAPSHOT
注意:READ UNCOMMITTED允许脏读、不可重复读、幻读,仅适用于对数据一致性要求极低、需要避免锁阻塞的场景,不建议作为核心业务库的全局配置
内容的提问来源于stack exchange,提问作者Rogerio
相关产品推荐
相关产品推荐

