SQL Server 2008はサポート終了
SQL Server 2008 / 2008 R2は、2019年7月9日をもってマイクロソフトの延長サポートが終了しました。
もちろん、2019年7月9日を過ぎたからといって、SQL Server 2008が急に動かなくなる訳ではありませんが、サポートが終了した製品は、バグやセキュリティの問題が発生しても、マイクロソフトから修正プログラムの提供を受けることができなくなります。
今でも、SQL Server 2008 / 2008 R2を使用している場合は、サポートが受けられる製品にアップグレードすることをお勧めします。
サポートが終了した製品を使い続けるリスク
前述のように、サポートが終了した製品であったも使い続けることは可能ですが、新たなセキュリティの脆弱性が見つかった場合などに、更新プログラムが提供されないため、セキュリティ・リスクを抱えたまま、データベースを運用する必要があります。
SQL Serverのサポート期限
ここでは、SQL Serverのバージョンごとのサポート期限について確認しましょう。
製品バージョン | メインストリームサポート期限 | 延長サポート期限 |
---|---|---|
SQL Server 2008 (R2) | 2014年07月08日 | 2019年07月09日 |
SQL Server 2012 | 2017年07月11日 | 2022年07月12日 |
SQL Server 2014 | 2019年07月09日 | 2024年07月09日 |
SQL Server 2016 | 2021年07月13日 | 2026年07月14日 |
SQL Server 2019 | 2025年01月07日 | 2030年01月08日 |
SQL Serverの各バージョンには、無償版の「SQL Server Express」と有償の「SQL Server」のエディションがありますが、サポート期限はどちらのエディションでも共通です。
上記の表を見ると、概ねメインストリームサポート期限は、製品発表後5年間、延長サポート期限は10年間となっているようです。
SQL Server 2008をアップグレードする場合は、サポート期限が最も長い「SQL Server 2019」を選ぶのがベストですが、難しい場合は出来るだけ新しいバージョンを検討するようにしましょう。
SQL Server 2008からの移行
ここまで、既にサポートが切れていている製品のリスクや、各バージョンごとのSQL Serverのサポート期限について解説してきました。
では、SQL Server 2008を新しいバージョンに移行する方法について確認してみましょう。
互換性レベルとは?
SQL Serverには、古いバージョンのSQL Serverを移行しやすいよう、互換性レベルという機能があり、例えば、SQL Server 2019上で、SQL Server 2012などの下位のバージョンと同等の動きにさせる事ができます。
各SQL Serverに割り当てられている互換性レベルは、次の表のとおりです。
SQL Server | 互換性レベル |
---|---|
SQL Server 2000 | 80 |
SQL Server 2005 | 90 |
SQL Server 2008(R2) | 100 |
SQL Server 2012 | 110 |
SQL Server 2014 | 120 |
Server 2016 | 130 |
SQL Server 2017 | 140 |
SQL Server 2019 | 150 |
この互換性レベルによって、本来上位バージョンにアップグレードすれば使えないはずだった機能が、そのまま使えるようになり、移行コストが少なくすみます。
互換性レベルを変更する
互換性レベルの規定値は、SQL Server 2019は「150」であるなど、上の表で紹介した、SQL Serverのバージョンに対応する互換性レベルが規定値となります。
SQL Serverの互換性レベルは、次のALTERコマンドで変更することができます。(コマンドはsaユーザーなどの管理者権限で実行します)
ALTER DATABASE database_name
SET COMPATIBILITY_LEVEL = <変更する互換性レベル>
ただし、すべてのバージョンで、すべての互換性レベルをサポートしているわけではなく、各製品バージョンがサポートしている互換性レベルは、次の表のとおりで、未対応の互換性レベルを構成することはできません。
SQL Server | サポートされている互換性レベル |
---|---|
SQL Server 2000 | 80 (SQL Server 2000) |
SQL Server 2005 | 90 (SQL Server 2005) 80 (SQL Server 2000) |
SQL Server 2008(R2) | 100(SQL Server 2008) 90 (SQL Server 2005) 80 (SQL Server 2000) |
SQL Server 2012 | 110(SQL Server 2012) 100(SQL Server 2008) 90 (SQL Server 2005) |
SQL Server 2014 | 120(SQL Server 2014) 110(SQL Server 2012) 100(SQL Server 2008) |
SQL Server 2016 | 130(SQL Server 2016) 120(SQL Server 2014) 110(SQL Server 2012) 100(SQL Server 2008) |
SQL Server 2017 | 140,(SQL Server 2017) 130(SQL Server 2016) 120(SQL Server 2014) 110(SQL Server 2012) 100(SQL Server 2008) |
SQL Server 2019 | 150 (SQL Server 2019) 140,(SQL Server 2017) 130(SQL Server 2016) 120(SQL Server 2014) 110(SQL Server 2012) 100(SQL Server 2008) |
2019年7月9日で延長サポートが切れた、「SQL Server 2008 / 2008 R2」は、最新バージョンである「SQL Server 2019」での互換性レベルがサポートされているため、おおよそスムーズに移行できるでしょう。
ただし、互換性レベルが「80 (SQL Server 2000)」や「90 (SQL Server 2005)」に設定されたSQL Server 2008を使用している場合、SQL Server 2014以降ではサポートされない互換性レベルのため、そのまま移行すると、互換性がない部分でエラーが発生します。
そのため、プログラム修正などの対処が必要になってくるでしょう。
できれば規定の互換性レベルのまま移行する
「SQL Server 2008 / 2008 R2」を移行するとき、新しいSQL Serverの互換性レベルを「100(SQL Server 2008)」に設定すれば、その場はスムーズに移行が完了するでしょう。
しかし、これは問題の先送りでしかありません。
将来のSQL Serverが互換性レベル「100(SQL Server 2008)」をサポートしなくなった場合、先送りにした部分の非互換まで対応が必要となり、最悪の場合、巨額のコストを捻出できず対応ができなくなる恐れがあるかもしれません。
その為、SQL Serverをバージョンアップする際は、将来困らないために互換性レベルは変えずに、新しいバージョンに合わせて非互換を修正するほうがよいでしょう。
データベースに、重要な売上・契約データなどが含まれたり、個人情報を格納していたりする場合、もしそれが流出するような問題が発生した場合、企業に大きなダメージを与えます。