【发布时间】:2021-02-04 00:14:39
【问题描述】:
是否可以在 MS SQL Server Management Studio 2012 中将事务隔离级别设置为默认为用户读取未提交?
我认为这可以通过编辑配置文件或更改 reg 键来完成,但我还没有找到任何可以改变这一点的东西。
【问题讨论】:
标签: sql sql-server sql-server-2012
是否可以在 MS SQL Server Management Studio 2012 中将事务隔离级别设置为默认为用户读取未提交?
我认为这可以通过编辑配置文件或更改 reg 键来完成,但我还没有找到任何可以改变这一点的东西。
【问题讨论】:
标签: sql sql-server sql-server-2012
据我所知,您无法更改默认锁定级别。
对于具有大量读取和较少写入的工作负载,您可以避免使用multiversion concurrency control 阻塞查询。这是 Postgres 和 Oracle 的默认设置。在 SQL Server 中,MVCC 称为"read committed snapshot",您可以通过以下方式启用它:
ALTER DATABASE YourDb SET READ_COMMITTED_SNAPSHOT ON;
【讨论】:
你不能。所有 SQL Server 数据库的默认隔离级别是已提交读,如果您想使用默认级别以外的级别,您唯一的选择是在会话中设置隔离级别。
您还可以在存储过程主体中设置 SET TRANSACTION ISOLATION LEVEL。
【讨论】:
你不能这样做。我相信你知道;使用 READ UNCOMMITTED 隔离级别时应该小心。来自MSDN:
设置此选项时,可以读取未提交 修改,称为脏读。数据中的值可以是 更改并且行可以在数据集中出现或消失 交易结束。此选项与设置的效果相同 在事务中的所有 SELECT 语句中对所有表进行 NOLOCK。
这意味着您的任何结果都不能保证包含准确的数据。
【讨论】: