【问题标题】:SQL Server Isolation Level issuesSQL Server 隔离级别问题
【发布时间】:2017-06-12 17:44:55
【问题描述】:

我查看了所有的隔离类型。

但我找不到我想要的模式。

在事务期间可以被其他事务读取。 但是,它不会添加更新和删除数据。

例如(伪代码):

create table abc
(id uniqueidentifier primary key)

Create proc procMain
trans isolation level **??????**
insert abc (id) values (newid())
Waiting 10 minute
commit

Create proc procREAD
select * from abc

Create proc procAdd
insert abc (id) values (newid())

create proc procUpdate
update abc id = newid()

create proc procDelete
delete from abc


now;
exec procMain (abc table access read only and for other access: LOCKED)

(waiting...)

exec procRead (OK) (Readable)
exec procAdd (NO - never) (locked)
exec procUpdate (NO - never) (locked)
exec procDelete (NO - never) (locked)

谢谢...

有这样的隔离级别吗? (事务隔离级别?)

【问题讨论】:

  • 没有禁止您更新或删除数据的隔离级别。这不是隔离级别应该做的。
  • 其实我想选择序列化级别。但是整张桌子都被锁定了。是否有基于行的序列化隔离级别?

标签: sql-server isolation-level transaction-isolation


【解决方案1】:

有点。如果您设置 READ COMMITTED SNAPSHOT 数据库设置,则 READ COMMITTED 会话将不会被正在进行的事务阻止。但他们会看到行的“last-known-good”版本,即当前事务开始之前的状态。

大卫

【讨论】:

  • 我认为,这是最理智的变体。
【解决方案2】:

您正在寻找READ UNCOMMITTEDLearn more here. 请注意,这会导致脏读。

【讨论】:

    猜你喜欢
    • 2010-11-10
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 2011-02-09
    • 2018-06-27
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多