【发布时间】:2021-04-13 18:25:34
【问题描述】:
在使用快照隔离的时候,为什么在设置事务级别之前经常看到IF @@TRANCOUNT = 0?
即在存储过程中:
IF @@TRANCOUNT = 0
BEGIN
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
END
【问题讨论】:
标签: sql sql-server snapshot-isolation
在使用快照隔离的时候,为什么在设置事务级别之前经常看到IF @@TRANCOUNT = 0?
即在存储过程中:
IF @@TRANCOUNT = 0
BEGIN
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
END
【问题讨论】:
标签: sql sql-server snapshot-isolation
一个原因是来自Microsoft Documentations:
不能将事务设置为以另一个隔离级别开始的 SNAPSHOT 隔离级别;这样做会导致事务中止。如果事务以 SNAPSHOT 隔离级别启动,您可以将其更改为另一个隔离级别,然后再返回到 SNAPSHOT。事务在第一次访问数据时开始。
【讨论】: