Sql 将默认事务隔离级别从READ_COMMITTED_SNAPSHOT更改为READ_COMMITTED,我期望得到什么?

Sql 将默认事务隔离级别从READ_COMMITTED_SNAPSHOT更改为READ_COMMITTED,我期望得到什么?,sql,sql-server,azure-sql-database,isolation-level,transaction-isolation,Sql,Sql Server,Azure Sql Database,Isolation Level,Transaction Isolation,在SQL Server中,默认隔离级别为READ\u COMMITTED,但在SQL Azure中,默认隔离级别为READ\u COMMITTED\u SNAPSHOT 假设我将SQL Azure server中的默认级别更改为读取提交的快照(使用设置事务隔离级别),使其行为类似于SQL server 我应该期待什么负面后果?您的应用程序逻辑可能会中断。真的,这在很大程度上取决于你在做什么。总的来说,一些要点: 与RCSI相比,True SNAPSHOT的“惊喜”要少得多。由于“快照”行版本在

在SQL Server中,默认隔离级别为
READ\u COMMITTED
,但在SQL Azure中,默认隔离级别为
READ\u COMMITTED\u SNAPSHOT

假设我将SQL Azure server中的默认级别更改为
读取提交的快照
(使用
设置事务隔离级别
),使其行为类似于SQL server


我应该期待什么负面后果?

您的应用程序逻辑可能会中断。真的,这在很大程度上取决于你在做什么。总的来说,一些要点:

  • 与RCSI相比,True SNAPSHOT的“惊喜”要少得多。由于“快照”行版本在事务启动时已在真实快照中明确定义,因此不会出现在同一事务中看到不同行版本的RCSI问题(这会导致非常微妙和难以理解的问题)
  • 您将得到更新冲突,而不是死锁,但是一个完全是“而不是”。存在一些差异,并且应用程序可能不会期望出现新的错误代码3960

我建议您检查一下。

关键是您不能在SQL中更改此设置Azure@twoleggedhorse:事实上你可以@双腿马:事实上,你是对的。我读过OP(并回答了诸如“从RCSI更改为快照”之类的问题),这是可能的。在Azure中不可能从RCSI更改为“READ COMMITTED”。+1通常不会有人承认我是对的-我会喜欢这样:)简单的回答是,在SQL Azure中你不能这样做:@twoleggedhorse:这不能在每个数据库中完成,但可以在每个连接中完成,不是吗?