SQL Server 相容性層級 (Compatibility Level)

2021-02-04

資料庫的相容性層級是在升級資料庫時不得不面對的議題,相關的知識筆記於本篇。

SQL Server Logo

說明

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

參考資料

ALTER DATABASE (Transact-SQL) 相容性層級