SQL Server 相容性層級 (Compatibility Level)
2021-02-04
資料庫的相容性層級是在升級資料庫時不得不面對的議題,相關的知識筆記於本篇。
說明
SQL Server 各資料庫都有一個相容性層級 (Compatibility Level) 屬性,表示該資料庫可以與對應的資料庫引擎所相容。通常而言,當相容性層級越高,對於新版的資料庫系統支援越好;相對地,相容性層級較低的資料庫,可能會因為資料庫升級而無法正常使用。
升級資料庫相容性原因
Why upgrade Database Compatibility Level?
為什麼要升級資料庫相容性?在 SQL Server 2017 以及 2019,所增加的 Intelligent Query Processing 對於 Query 以及 Execution Plan 的處理有更佳的演算法,因此升級資料庫的相容性層級,才能夠發揮新版本資料庫所帶來的效能提升 😃
如何檢視資料庫的相容性層級
使用 SSMS
資料庫 / 右鍵 / 屬性 / 選項
使用 T-SQL
USE MASTER;
SELECT name, compatibility_level FROM sys.databases
如何調整資料庫的相容性層級
使用 T-SQL
ALTER DATABASE DBNAME SET COMPATIBILITY_LEVEL = 150;
各版本資料庫可以設定的相容性層級
Products | 資料庫引擎版本 | 預設相容性層級指定 | 支援的相容性層級值 |
---|---|---|---|
SQL Server 2019 (15.x) | 15 | 150 | 150、140、130、120、110、100 |
SQL Server 2017 (14.x) | 14 | 140 | 140、130、120、110、100 |
Azure SQL Database | 12 | 150 | 150、140、130、120、110、100 |
SQL Server 2016 (13.x) | 13 | 130 | 130、120、110、100 |
SQL Server 2014 (12.x) | 12 | 120 | 120、110、100 |
SQL Server 2012 (11.x) | 11 | 110 | 110、100、90 |
SQL Server 2008 R2 | 10.5 | 100 | 100、90、80 |
SQL Server 2008 | 10 | 100 | 100、90、80 |
SQL Server 2005 (9.x) | 9 | 90 | 90、80 |
SQL Server 2000 (8.x) | 8 | 80 | 80 |