SQL Serverの互換性レベルについて

サーバが古くなったため、とあるシステムを新しいサーバへ移行することに

 

とあるシステムを調べたところ、下記で動いていることがわかりました

 OS も DB も既にサポート切れのため、違うバージョンに移行することを余儀なくされました。

そこで、Windows Server 2016 に、現在最新のSQL Server 2016 をインストールして、移行しようとしましたが、データベースの復元に失敗・・・

f:id:adakkuma:20170630210543j:plain

 

 それは、SQL Server の データベースには 「互換性レベル」 というものがあり、ぞれぞれのSQL Serverのバージョンによって動作できるものが決まっていることがわかりました。

忘れないために、メモしておきます。

 

データベースの「互換性レベル」とは

SQL Server バージョン に 互換性レベル というものが決まっています。

関係性は下記の通り

バージョン 互換性レベル
SQL Server 2000 80
SQL Server 2005 90
SQL Server 2008, SQL Server 2008 R2 100
SQL Server 2012 110
SQL Server 2014 120
SQL Server 2016 130

 

Program Files の Microsoft SQL Server フォルダ直下に、数字だけのフォルダがあって、これは何だろうと思ってましたが、互換性レベルと何やら関係性がありそうですね

f:id:adakkuma:20170630233324p:plain

 

互換性レベル と そのサポートについて

バックアップしたデータベースをリストアするなどできるバージョンはどれかについての関係性は下記になっています

互換性レベル 80 90 100 110 120 130

  SQL Server 2008 R2  

× × ×
SQL Server 2012 × × ×
SQL Server 2014 × × ×
SQL Server 2016 × × × ×

 

例えば、SQL Server 2000 (互換性レベル:80)のデータベースをバックアップして、そのバックアップをリストア(復元)できるのは、SQL Server 2008 R2 だけ ということになります

 

システムを移行する際には、現行システムがどのように動いているのか、移行後にどのソフトを利用してシステムを運用するのかなど、細心の注意が必要となります。

 

今回のように、サポート切れのソフトを使用したシステムがサポート中のソフトへ移行できてよかったですが、ものによっては、システムを修正しなければサポート中のソフトに移行できないなどのケースもあるため、移行する工数を算出する際には、その辺まで考慮して計画を立てなければ大変なことになっちゃいますますのでご注意を。。。