Azure-Sql-Database

在 SQL Server 2017 和 Azure SQL DB 中查找預設隔離級別

  • May 3, 2018

我正在閱讀與事務和並發相關的書。在一段中提到:

  • 在本地 SQL Server 實例中,預設隔離級別是基於鎖定的已送出讀

下一句是:

  • SQL 數據庫中的預設值是基於行版本控制的讀取送出快照

我的問題是:這兩個句子中的“本地 SQL Server 實例”和“SQL 數據庫”有什麼區別?

什麼是預設隔離級別,如何找到它?是否有任何特殊查詢可以找出預設隔離級別?

它指的是預設使用RCSI 的Azure SQL 數據庫

隔離級別 SQL

數據庫預設數據庫範圍設置是通過將 READ_COMMITTED_SNAPSHOT 和 ALLOW_SNAPSHOT_ISOLATION 數據庫選項設置為 ON 來啟用讀取送出快照隔離 (RCSI),在此處了解有關隔離級別的更多資訊。您不能更改數據庫預設隔離級別。但是,您可以在連接上顯式控制隔離級別。

在本地 SQL Server 中,預設隔離級別為已送出讀。

找到“預設”隔離級別有點麻煩。它將取決於發起查詢的數據庫,以及查詢中是否存在任何提示以覆蓋數據庫級別設置。

也就是說,您可以查詢sys.databases以了解是否啟用了 RCSI 或 SI。

SELECT d.name, 
      d.is_read_committed_snapshot_on, 
      d.snapshot_isolation_state
FROM sys.databases AS d;

請注意,從READ_COMMITTED_SNAPSHOT技術上講,這不是隔離級別。相反,它是一個控制實現的數據庫選項,以便使用行版本控製而不是鎖定來為使用READ_COMMITTED隔離級別的會話提供讀取一致性。

引用自:https://dba.stackexchange.com/questions/205686