サーバが古くなったため、とあるシステムを新しいサーバへ移行することに
とあるシステムを調べたところ、下記で動いていることがわかりました
- OS :Windows Server 2003
- アプリ :Apache 2.2 、PHP 5.3
- DB :SQL Server 2000
OS も DB も既にサポート切れのため、違うバージョンに移行することを余儀なくされました。
そこで、Windows Server 2016 に、現在最新のSQL Server 2016 をインストールして、移行しようとしましたが、データベースの復元に失敗・・・
それは、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 フォルダ直下に、数字だけのフォルダがあって、これは何だろうと思ってましたが、互換性レベルと何やら関係性がありそうですね
互換性レベル と そのサポートについて
バックアップしたデータベースをリストアするなどできるバージョンはどれかについての関係性は下記になっています
互換性レベル | 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 だけ ということになります
システムを移行する際には、現行システムがどのように動いているのか、移行後にどのソフトを利用してシステムを運用するのかなど、細心の注意が必要となります。
今回のように、サポート切れのソフトを使用したシステムがサポート中のソフトへ移行できてよかったですが、ものによっては、システムを修正しなければサポート中のソフトに移行できないなどのケースもあるため、移行する工数を算出する際には、その辺まで考慮して計画を立てなければ大変なことになっちゃいますますのでご注意を。。。