SQL2014的資料庫相容性層級可以相容到Level 90嗎?

一直以來都聽聞MS SQL新版本的相容性層級會向下相容2個版本,例如:SQL2008會支援SQL2000,SQL2012支援到SQL2005等。但SQL2014在設定相容性層級的UI中居然顯示支援SQL2005,這實在太令人感動了。但這一切是真的嗎 ? 我們來測試一下吧 ! ! ! 

其實會有這樣的質疑是因為某日跟許致學老師聊天時,老師說SQL2014並不支援SQL2005的相容型層級。他表示雖然UI有該選項可以調整,但實際設定後會發生錯誤,並無法變更相容性層級到SQL2005(90)。

 

下圖是各版本SQL的相容型層級支援

 

由下圖中紅色圈選處,我們可以看見DB屬性中關於相容性層級是可以選擇SQL2005(90)這一個選項的。

 

我們先檢視一下等一下要變更的資料庫DB1,其相容性層級如下圖紅色圈選處顯示為120,也就是SQL2014版本。

 

接下來我們用下圖語法來將資料庫DB1的相容性層級改為SQL2005(90)。我們可以看見下圖的執行結果是發生錯誤的,且錯誤訊息中明顯告訴我們相容性層級的有效值為100及110和120三種。所以根本無法調整資料庫相容性層級到90。

 

既然無法調整相容型層級到SQL2005(90),那如果拿SQL2005的資料庫備份檔還原到SQL2014是否可行呢 ? 如下圖所示,我拿了一個SQL2005的備份檔來還原到一台SQL2014上(一般升級資料庫的作法)。從下圖紅色圈選處可以看見資料庫被升級且還原至一台SQL2014的Server上了。

 

此時我們查一下剛剛還原上去的資料庫fjuis的相容性層級會是SQL2005(90)嗎 ? 如下圖所示,該資料庫雖然可以被正常還原到SQL2014,但是該相容性層級卻是100而非90。

 

即使再利用語法去變更資料庫fjuis相容性層級由100到90,還是一樣發生失敗。

MSDN有一段說明 : 所有 SQL Server 2014 安裝的預設相容性層級為 120。在 SQL Server 2014 中建立的資料庫都設定為這個層級,除非 model 資料庫具有更低的相容性層級。當資料庫從任何舊版 SQL Server 2014 升級到 SQL Server 時,資料庫會保留其現有的相容性層級 (如果它至少為 100)。將相容性層級 90 的資料庫升級時,會將此資料庫設定為相容性層級 100。

由上一段MSDN說明我們可以知道SQL2014接受SQL2005的資料庫,一但將SQL2005的資料庫以還原或附加方式升級到SQL2014上後,SQL會將該資料庫相容性層級由90改為100且無法調降到90。 因此打算將SQL2005升級至SQL2014的朋友要注意這一點,一但升級上SQL2014版本則資料庫相容性版本只能相容至SQL2008(100)而已。但微軟也算佛心來著,至少不用跳兩層才能將SQL2005轉到SQL2014,而是可以直接將SQL2005的備份檔利用還原方式來升級到SQL2014,降低了不少升級資料庫需耗費的時間囉。

 

參考資料來源 : ALTER DATABASE 相容性層級

我是ROCK

rockchang@mails.fju.edu.tw