一直以來都聽聞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說明我們可以知道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