誰能幫我理解 MSSQL 兼容級別?
我的任務是將數據庫從 SQL Server 2005 升級到 SQL Server 2012。所以我備份了舊數據庫並將其簡單地恢復到 SQL Server 2012 (SP3)。
在新數據庫上執行查詢:
SELECT compatibility_level FROM sys.databases WHERE name = 'MyNewDatabase';
結果:
compatibility_level ------------------- 90
但是系統數據庫將 Compatibility_Level 顯示為
110
MSSQL-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 版以來引入的較新功能,您需要更新到更高的兼容性級別。您可以在此處查看一些更改的列表:
另請注意,從 SQL Server 2014(級別 120)開始,90 兼容級別不可用。因此,下次升級時,您的數據庫將自動更新到兼容級別 100。您可以在此處查看每個引擎版本的支持級別表: