【问题标题】:Why check TRANCOUNT before setting TRANSACTION ISOLATION LEVEL SNAPSHOT为什么要在设置 TRANSACTION ISOLATION LEVEL SNAPSHOT 之前检查 TRANCOUNT
【发布时间】:2021-04-13 18:25:34
【问题描述】:

在使用快照隔离的时候,为什么在设置事务级别之前经常看到IF @@TRANCOUNT = 0?

即在存储过程中:

IF @@TRANCOUNT = 0
BEGIN
    SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
END

【问题讨论】:

    标签: sql sql-server snapshot-isolation


    【解决方案1】:

    一个原因是来自Microsoft Documentations:

    不能将事务设置为以另一个隔离级别开始的 SNAPSHOT 隔离级别;这样做会导致事务中止。如果事务以 SNAPSHOT 隔离级别启动,您可以将其更改为另一个隔离级别,然后再返回到 SNAPSHOT。事务在第一次访问数据时开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 2015-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多