我将描述我的问题以便于解释:
我有一个表,我的软件正在使用事务访问它(更新、插入)。
问题是我想在这个表中启用 DIRT READ。但我不能在我的 sql 语句中使用 with (nolock),因为我不能更改软源。所以我想在开始事务的sql进程中启用脏读。
它看到命令“SET ISOLATION LEVEL ...”和“WITH(NOLOCK)”在访问锁定表的语句中执行......这就是我试图避免的。我想在开始交易的语句中启用脏读...
提前致谢!
我将描述我的问题以便于解释:
我有一个表,我的软件正在使用事务访问它(更新、插入)。
问题是我想在这个表中启用 DIRT READ。但我不能在我的 sql 语句中使用 with (nolock),因为我不能更改软源。所以我想在开始事务的sql进程中启用脏读。
它看到命令“SET ISOLATION LEVEL ...”和“WITH(NOLOCK)”在访问锁定表的语句中执行......这就是我试图避免的。我想在开始交易的语句中启用脏读...
提前致谢!
对于确实无法避免争用且架构设计正确的极少数情况,答案绝不是启用脏读,而是转向快照隔离:
ALTER DATABASE ... SET ALLOW_SNAPSHOT_ISOLATION ON;
ALTER DATABASE ... SET READ_COMMITTED_SNAPSHOT ON;
对于快照隔离引入的行版本控制开销可见的少数部署,他们有专业人员可以缓解问题。