【发布时间】:2019-08-18 15:16:19
【问题描述】:
在 Azure SQL 中,默认隔离级别是 RCSI。我理解这种行为。据我了解,对我来说打破它的是,在通过简单的 ADO.NET SqlConnection 选择我的数据时,我需要使用已提交的读取。我很难理解在进行简单选择时是否应用了行版本控制。使用 SqlConnection 时应用的默认隔离级别是什么?
我读过
READ_COMMITTED_SNAPSHOT 数据库选项确定在数据库中启用快照隔离时默认 READ COMMITTED 隔离级别的行为。如果您没有明确指定 READ_COMMITTED_SNAPSHOT ON,则 READ COMMITTED 将应用于所有隐式事务。这会产生与设置 READ_COMMITTED_SNAPSHOT OFF(默认值)相同的行为。当 READ_COMMITTED_SNAPSHOT OFF 生效时,数据库引擎使用共享锁来强制执行默认隔离级别。如果将 READ_COMMITTED_SNAPSHOT 数据库选项设置为 ON,则数据库引擎默认使用行版本控制和快照隔离,而不是使用锁来保护数据。
这是否意味着数据库只是将所有默认事务升级到 RCSI,因此如果未指定特定事务级别,它将对所有内容应用行版本控制?所以 SqlConnection 只是默认为 RCSI 而不是默认的读取提交。
【问题讨论】:
标签: azure ado.net azure-sql-database