松本美穂と松本崇博が執筆した SQL Server 2014 実践シリーズの「No.2 SQL Server 2014 への移行とアップグレードの実践」の HTML 版です。 日本マイクロソフトさんの Web サイトで Word または PDF 形式でダウンロードできますが、今回、HTML 版として公開する許可をいただきましたので、ここに掲載いたします。[2015年12月29日]
アップグレードと移行は、次のように 4つのケースに分類できます。
これは、単純なアップグレード(インプレース アップグレード)で、以前のバージョンの SQL Server を SQL Server 2014 に完全に置き換える(上書きする)ものです。
この方法のメリットは、以前のバージョンで利用していた機能をほとんどすべてそのまま利用できることです。データベースを以前と変わらずに利用できることはもちろん、ログイン アカウントや、ジョブ、警告、暗号化、リンク サーバー、メンテナンス プラン(保守計画)、リソース ガバナー、SQL Server Audit、ポリシー ベースの管理、データベース メール、サーバーの構成オプション、Reporting Services、Analysis Services など、以前の SQL Server で設定/利用していた機能を、そのまま SQL Server 2014 上でも利用することができます。
また、レプリケーションやログ配布、データベース ミラーリング、可用性グループといったサーバー間の連携機能や、WSFC(Windows Server フェールオーバー クラスタリング)上の SQL Server インスタンスに関しても、アップグレードをすることができます。ログ配布/データベース ミラーリング/可用性グループに関しては、セカンダリを先にアップグレードすることで、ローリング アップグレードも可能です(ローリング アップグレードによって、セカンダリをアップグレード中でも、プライマリを利用することができるので、ダウンタイムを最小限に抑えることができます)。
一方で、この方法のデメリットは、アップグレード後に、旧システム環境が利用できなくなってしまう(以前のバージョンの SQL Server が完全に利用できなくなってしまう)ことです。これだと、万が一アップグレードに失敗してしまった場合には、元の環境に戻すのが大変になり、失敗時は、(最悪は)OS のインストールからやり直して、バックアップからすべてを復元しなければならない場合があります。
したがって、このケースを利用する場合は、万が一のアップグレード失敗時に備えて、元の環境でしっかりとバックアップを取得しておくこと、元へ戻す手順(ロールバック手順)をしっかりと計画しておくことが重要になります。また、次の「ケース2」のように、ハードウェア リプレースを伴うアップグレードの場合であれば、元の環境をそのまま残しておくことができるので、万が一の失敗時にもすぐに元の環境に戻せるようになります。
ケース1は、同一マシンでのアップグレードでしたが、このケースは別マシンを利用したアップグレードです。ハードウェアの保守切れや老朽化などによって、新規サーバーの購入(ハードウェア リプレース)を行って、そのマシンへ旧システム環境を丸ごと複製して、それを SQL Server 2014 へアップグレードする方法です。
このケースは、弊社のお客様に多く、現在のマスターと同じ名前の新規サーバーを、同じ Active Directoryドメイン内に構築したい場合には、この方法が一番簡単で確実になります。ただし、この方法は、あくまでも同じ名前の新規サーバーを同じ Active Directoryドメイン内に作成できること、サービス アカウントが同じドメイン ユーザーであることが条件になるので、異なるドメインやワークグループ環境、違う名前の新規サーバーを構築する場合には、次の「ケース3 別マシンへの移行」(マイグレーション)を利用する必要があります。
ケース1では、同一マシンでのアップグレードによって、元の環境を残せないのがデメリットであると説明しましたが、このケースでは、旧システム環境をそのまま残すことができるのがメリットです。具体的な手順は後述しますが、旧システム環境が SQL Server 2005 の場合は、SQL Server 2005 が全く同じように動作するように、丸ごと複製します(システム データベースを移動するなどして、各種の設定を完全複製し、マシン名も同じ、同じ Active Directoryドメイン内に参加するようにします)。丸ごとの複製が完了したら、旧システム環境をネットワークから切り離して、新規サーバー(新マスター)を SQL Server 2014 へアップグレードします。これによって、万が一アップグレードの失敗があったとしても、旧システム環境が残っているので、すぐに元の環境に戻せるようになります。
実際、弊社のお客様では、この方法(ケース2)を利用してアップグレードを行ったときに、ハードウェア リプレースだけでなく、データセンターの変更(別のデータセンター内のハードウェアに変更)も行ったのですが、当日の作業で、SQL Server へのアップグレードは完了したものの、(データセンター側の)ネットワーク機器の設定ミスによって、ネットワークの移行が失敗してしまうということがありました。このままでは予定停止時間をオーバーしてしまって、翌朝のサービス インには間に合わなくなってしまうことから、この日は残っている旧システム環境を利用して元に戻して、アップグレードを断念したということがありました(後日、再度作業を行って、今度は無事にアップグレードが完了しました)。
このように、万が一に備えて、旧システム環境がそのまま残っていることは、大変便利です。もし、旧システム環境が残っておらず、OS をイチからインストールし直さなければならなかったとすると、とても停止時間内には元に戻すことはできませんでした。
このケースは、新規サーバー(ハードウェア リプレースなど)を利用して、そのマシンへ SQL Server 2014 をインストールし、データベースや各種の設定を移行(マイグレーション)する方法です。弊社のお客様で一番多いのがこのケースです。ハードウェア リプレースを機会に、32ビットから 64ビット環境へ移行したり、SSD やフラッシュ ストレージなどの高速ストレージ環境へ移行したりするというお客様も多くいらっしゃいます。
最近では、32ビット環境の SQL Server 2008 を、Microsoft Azure 上の仮想マシン(Windows Server 2012 R2)の SQL Server 2014(64ビット)への移行を検討していて、既にバッチ処理(ストアド プロシージャ)の実行時間などを検証しているお客様にお会いしました。バッチ処理は、クラスター化列ストア インデックスに変更することで、性能が上がることを確認できたとおっしゃっていました。
こうしたマシンをまたがった場合でも、SQL Server では簡単に移行を行うことができます。データベースの移行は、標準のバックアップと復元機能で行うことができ、バックアップと復元機能を利用すれば、別マシンであっても簡単にデータベースを複製することができ、32ビットから 64ビットへ変更したとしても、移行先の OS が変わったとしても、オンプレミスからクラウドに変わったとしても、簡単に移行することができます。
各種の設定(ログイン アカウントやジョブ、警告、リンク サーバーなどの設定)に関しても、スクリプト生成機能を利用することで、簡単に移行することができます。
ケース1 やケース2 との大きな違いとしては、サーバー管理に関する機能(リソース ガバナーやSQL Server Audit、ポリシー ベースの管理、パフォーマンス データ コレクションなど)や、サーバー間の連携機能(ログ配布やレプリケーション、データベース ミラーリング、可用性グループなど)に関しては、再設定をする必要がある点です。
このケースでは、同じマシン内に、新しいインスタンスとして、SQL Server 2014 をインストールし、旧システム環境(旧バージョンの SQL Server インスタンス)からデータベースや各種の設定を移行(マイグレーション)します。ケース3 との違いは、同じマシンかどうかだけになります。
以降では、これらのケース1~3での具体的な手順を説明します(ケース4 に関しては、ケース3 とほとんど同じなので省略します)。
第60回:SQL Server 2017 自習書 No.3「SQL Server 2017 Machine Learning Services」のご案内
第59回:SQL Server 2017 自習書 No.2「SQL Server 2017 on Linux」のご案内
第58回:SQL Server 2017 自習書 No.1「SQL Server 2017 新機能の概要」のご案内
第57回:SQL Server 2017 RC 版とこれまでのドキュメントのまとめ
第56回:「SQL Server 2016 への移行とアップグレードの実践」完成&公開!
第55回:書籍「SQL Server 2016の教科書 開発編」(ソシム)が発刊されました
第54回:「SQL Server 2016 プレビュー版 Reporting Services の新機能」自習書のお知らせ
第 53 回:SQL Server 2016 Reporting Services の新しくなったレポート マネージャーとモバイル レポート機能
第 52 回:SQL Server 2016 の自習書を作成しました!
第 51 回:PASS Summit と MVP Summit で進化を確信!
第 50 回:新しくなった Power BI(2.0)の自習書を作成しました!
第49 回:Excel 2016 の Power Query を使う
第 48 回:新しくなった Microsoft Power BI ! 無料版がある!!
第 47 回:「Microsoft Azure SQL Database 入門」 完成&公開!
第 46 回:Microsoft Power BI for Windows app からの Power BI サイト アクセス
第 45 回:Power Query で取得したデータを PowerPivot へ読み込む方法と PowerPivot for Excel 自習書のご紹介
第44回:「SQL Server 2014 への移行とアップグレードの実践」ドキュメントを作成しました
第43回:SQL Server 2014 インメモリ OLTP 機能の上級者向けドキュメントを作成しました
第42回:Power Query プレビュー版 と Power BI for Office 365 へのクエリ保存(共有クエリ)
第41回:「SQL Server 2014 CTP2 インメモリ OLTP 機能の概要」自習書のお知らせです
第40回: SQL Server 2012 自習書(HTML版)を掲載しました
第39回: Power BI for Office 365 プレビュー版は試されましたか?
第38回: SQL Server 2014 CTP2 の公開
第37回: SQL Server 2014 CTP1 の自習書をご覧ください
第36回: SQL Server 2014 CTP1 のクラスター化列ストア インデックスを試す
第35回: SQL Server 2014 CTP1 のインメモリ OLTP の基本操作を試す
第34回: GeoFlow for Excel 2013 のプレビュー版を試す
第33回: iPad と iPhone からの SQL Server 2012 Reporting Servicesのレポート閲覧
第32回: PASS Summit 2012 参加レポート
第31回: SQL Server 2012 Reporting Services 自習書のお知らせ
第30回: SQL Server 2012(RTM 版)の新機能 自習書をご覧ください
第29回: 書籍「SQL Server 2012の教科書 開発編」のお知らせ
第26回: SQL Server 2012 の Power View 機能のご紹介
第25回: SQL Server 2012 の Data Quality Services
第24回: SQL Server 2012 自習書のご案内と初セミナー報告
第23回: Denali CTP1 が公開されました
第22回 チューニングに王道あらず
第21回 Microsoft TechEd 2010 終了しました
第20回 Microsoft TechEd Japan 2010 今年も登壇します
第19回 SQL Server 2008 R2 RTM の 日本語版が公開されました
第18回 「SQL Azure 入門」自習書のご案内
第17回 SQL Server 2008 自習書の追加ドキュメントのお知らせ
第16回 SQL Server 2008 R2 自習書とプレビュー セミナーのお知らせ
第15回 SQL Server 2008 R2 Reporting Services と新刊のお知らせ
第14回 TechEd 2009 のご報告と SQL Server 2008 R2 について
第13回 SQL Server 2008 R2 の CTP 版が公開されました
第12回 MVP Summit 2009 in Seattle へ参加