如何根据隔离级别读取原始数据


trpnest
2025-02-01 05:01:36 (2天前)


数据
</跨度>
正在更新。

有办法吗?

隔离
</跨度>
水平或暗示或这两者的组合)来看原件

数据
</跨度>
(杰克,而不是迈克尔)在交易提交或回滚之前?
我的测试表:

CREATE TABLE [dbo]。[Personel](
[PersonelID] [int] NOT NULL,
[名称] [nchar](10)NULL,
CONSTRAINT [PK_Personel] PRIMARY KEY CLUSTERED

[PersonelID] ASC

我的测试

数据
</跨度>

3 条回复
  1. 0# v-star*위위 | 2019-08-31 10-32



    您可以在SNAPSHOT隔离级别中访问旧版本的数据。



    这要求在启动之前数据库已启用快照隔离:




    1. ALTER DATABASE SET ALLOW_SNAPSHOT_ISOLATION ON

    2. </code>


    然后在连接B中




    1. SET TRANSACTION ISOLATION LEVEL SNAPSHOT

    2. select * from Personel

    3. </code>


    快照隔离有一些性能考虑因素,因为它会复制读入tempdb的行。




    文档参考


  2. 1# 不见你 | 2019-08-31 10-32



    SNAPSHOT(又名行版本控制)。



    在快照隔离下,当连接B中的ti启动事务时,连接B将看到数据为原样(即使您没有启动显式事务,SELECT语句也会启动隐式事务)。看到

    了解基于行版本控制的隔离级别





    快照事务执行的读取操作检索最后一个
    快照时提交的每一行的版本
    交易开始了。




    必须在数据库中明确启用SNAPSHOT支持:




    1. ALTER DATABASE SET ALLOW_SNAPSHOT_ISOLATION ON;

    2. </code>

登录 后才能参与评论