Sql-Server

誰能幫我理解 MSSQL 兼容級別?

  • January 22, 2019

我的任務是將數據庫從 SQL Server 2005 升級到 SQL Server 2012。所以我備份了舊數據庫並將其簡單地恢復到 SQL Server 2012 (SP3)。

在新數據庫上執行查詢:

SELECT compatibility_level
FROM sys.databases
WHERE name = 'MyNewDatabase';

結果:

compatibility_level
-------------------
90

但是系統數據庫將 Compatibility_Level 顯示為110MSSQL-Server-2012 的“”。

讓我用以下問題來結束我的問題:

  • 如果 Compatibility_level =90適用於 SQL Server 2005,那麼數據庫真的升級到 SQL Server 2012 了嗎?
  • 為什麼恢復的數據庫顯示 Compatibility_Level 為 ’ 90’ 而不是 ’ 110’?
  • 另外,如果它只包含 SQL Server 2005 的功能,那麼將它升級到 SQL Server 2012 的更好方法是什麼?

升級是否像“ALTER DB”一樣簡單?像這樣:

ALTER DATABASE MyNewDatabase
SET COMPATIBILITY_LEVEL = '110';

也許 Compatibility_level = 90 是 MSSQL-2005 的,那它真的升級到 MSSQL-Server-2012 還是沒有?我怎麼知道?

如果它在 2012 實例上執行,則該數據庫的元數據已升級。所以你很好。

誰能解釋一下為什麼恢復的數據庫也將 Compatibility_Level 顯示為“90”而不是“110”?

當您將數據庫恢復到較新的版本(稱為升級)時,它的兼容性級別設置為該實例支持的最低版本。在這種情況下,90 在 2012 實例上仍然有效,因此保持原樣。

另外,如果它仍然只包含 MSSQL-Server-2005 的功能,那麼將其升級到 MSSQL-Server-2012 的更好方法是什麼?

升級就像“ALTER DB”一樣簡單??像

是的,它真的就像ALTER DATABASE ... SET COMPATIBILITY_LEVEL.

只要您願意,您就可以保持較低的兼容性級別。但是,要使用自 90 版以來引入的較新功能,您需要更新到更高的兼容性級別。您可以在此處查看一些更改的列表:

較低兼容級別與級別 110 和 120 之間的差異

另請注意,從 SQL Server 2014(級別 120)開始,90 兼容級別不可用。因此,下次升級時,您的數據庫將自動更新到兼容級別 100。您可以在此處查看每個引擎版本的支持級別表:

ALTER DATABASE (Transact-SQL) 兼容級別 - 參數

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