【问题标题】:How to set transaction isolation level as read uncommitted as default for users如何将事务隔离级别设置为用户默认未提交读
【发布时间】:2021-02-04 00:14:39
【问题描述】:

是否可以在 MS SQL Server Management Studio 2012 中将事务隔离级别设置为默认为用户读取未提交?

我认为这可以通过编辑配置文件或更改 reg 键来完成,但我还没有找到任何可以改变这一点的东西。

【问题讨论】:

    标签: sql sql-server sql-server-2012


    【解决方案1】:

    据我所知,您无法更改默认锁定级别。

    对于具有大量读取和较少写入的工作负载,您可以避免使用multiversion concurrency control 阻塞查询。这是 Postgres 和 Oracle 的默认设置。在 SQL Server 中,MVCC 称为"read committed snapshot",您可以通过以下方式启用它:

    ALTER DATABASE YourDb SET READ_COMMITTED_SNAPSHOT ON;
    

    【讨论】:

    • 谢谢,不确定这是否可能,但认为最好检查一下!
    【解决方案2】:

    你不能。所有 SQL Server 数据库的默认隔离级别是已提交读,如果您想使用默认级别以外的级别,您唯一的选择是在会话中设置隔离级别。

    您还可以在存储过程主体中设置 SET TRANSACTION ISOLATION LEVEL

    【讨论】:

      【解决方案3】:

      你不能这样做。我相信你知道;使用 READ UNCOMMITTED 隔离级别时应该小心。来自MSDN

      设置此选项时,可以读取未提交 修改,称为脏读。数据中的值可以是 更改并且行可以在数据集中出现或消失 交易结束。此选项与设置的效果相同 在事务中的所有 SELECT 语句中对所有表进行 NOLOCK。

      这意味着您的任何结果都不能保证包含准确的数据。

      【讨论】:

        【解决方案4】:

        您可以在 SQL Server Management Studio 中通过设置执行选项来执行此操作。 (工具>选项>查询执行>SQL Server>高级>设置事务隔离级别>)

        注意:这只适用于从此 SSMS 实例执行的查询。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-27
          • 2013-11-20
          相关资源
          最近更新 更多