「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
以下は種々のアップグレード・パスの参考資料です。
アップグレードとマイグレーション †
アップグレード †
基本的なアップグレードと移行方法は、インストール ファイルの Setup.exe からセットアップ ウィザードでの実行となります。
アップグレードの実行で、既存のコンポーネントやデータベースに 問題が発生しないか、既存インスタンスの解析を行います。
その結果、問題となる部分が発見された場合には、アップグレードを実行する前に必ず対処しておく必要があります。
さらに Upgrade Advisor によって得た結果を、Upgrade Advisor Report Viewer によってレポート形式で出力することもできます。
Upgrade Advisor ツールは既定でインストールされないため、
セットアップ メニューから[Install SQL Server Upgrade Advisor] を選択して、
ツールをインストールする必要があります。
マイグレーション †
- Analysis Services
- Reporting Services
- Integration Services
については、専用の移行ツールが備えられており、
ウィザードで移行作業にかかる工数を簡略化することができます。
サポートされるアップグレード・パス †
サポートされているバージョンとエディションのアップグレード
SQL Server 2000 → SQL Server 2012アップグレードは、
サポートされず、2008などのDBを経由する必要があるようです。
アップグレード †
アップグレード アドバイザー †
アップグレード アドバイザーを使用したアップグレードの準備
http://msdn.microsoft.com/ja-jp/library/ms144256.aspx
アップグレード アドバイザーでは、
以前のバージョンの SQL Server でインストールされたコンポーネントが分析され、
アップグレードの前または後に修正する必要がある問題を示すレポートが生成されます。
インストール ウィザード †
インストール ウィザードを使用した
SQL Server 2012 へのアップグレード (セットアップ)
http://msdn.microsoft.com/ja-jp/library/ms144267
SQL Server インストール ウィザードでは、1 つの機能ツリーを使用して、
SQL Server コンポーネントをアップグレードできます。
マイグレーション †
バックアップ / リストア †
バックアップと復元によるデータベースのコピー
http://msdn.microsoft.com/ja-jp/library/ms190436.aspx
#オンライン・バックアップに相当する。
- 復元を使用してデータベースをアップグレードする場合
バックアップを SQL Server 2005 または SQL Server 2008 から復元する場合は、
バックアップにある各フルテキスト カタログのパス (ドライブとディレクトリ) が
コピー先コンピューターに存在するかどうかを事前に知っておくと便利です。
- 復元時、GUIからは[オプション]ページから復元先のパスを変更することができます。
T-SQLのRESTOREステートメントからリストアする場合もMOVE..TOでパス変更可能です。
これは、移行元と移行先でドライブ構成やフォルダ構成が異なる場合に利用します。
- 復元の後、ユーザーおよびアプリケーションに一貫した使用環境を提供するために、
復元先のサーバー インスタンスで、ログイン、ジョブ、権限などの
データベースのメタデータの一部またはすべてを作成し直す必要が生じる場合があります。
デタッチ / アタッチ †
ファイルのデタッチ / アタッチもバックアップ / リストアの一種です。
#オフライン・バックアップに相当する。
- バックアップ / リストアと同様、デタッチ / アタッチでも移行が可能です。
ファイル グループとなどの構成変更は可能か? †
- T-SQLでファイルとファイル グループの場所を変更することもできます。
(GUIからも可能かもしれない(未確認))
補足情報 †
SQL Server データベースのアップグレード後
- データベースにフルテキスト インデックスがある場合、
upgrade_option サーバー プロパティの設定に応じて、アップグレード プロセスで
データベースのインポート、リセット、または再構築のいずれかが行われます。
- アップグレード前のユーザー データベースの互換性レベルが
- 90 または 100 の場合は、アップグレード後も互換性レベルは変わりません。
- 80 以下の場合、アップグレードされたデータベースの互換性レベルは 90 に設定されます。
- データベースを別のサーバー インスタンスにアタッチするときは、
ユーザーおよびアプリケーションに一貫した使用環境を提供するために、
アタッチ先のサーバー インスタンスで、ログイン、ジョブ、権限などの
データベースのメタデータの一部またはすべてを作成し直す必要が生じる場合があります。
- 3DES から AES へのサービス マスター キーとデータベース マスター
データベース コピー ウィザード †
データベース コピー ウィザードは
内部的に「デタッチとアタッチ」を使用している。
エクスポート & インポート †
インポート / エクスポートウィザード †
ジョブやログイン DTS パッケージの移行等を考慮する必要がありますが、
データベース単体であればスキーマと、データを
インポート / エクスポートウィザード(SSIS)で移行できます。
ただし、同様にインポートの後、
ユーザーおよびアプリケーションに一貫した使用環境を提供するために、
アタッチ先のサーバー インスタンスで、ログイン、ジョブ、権限などの
データベースのメタデータの一部またはすべてを作成し直す必要が生じる場合があります。
インポート / エクスポート ウィザードでテーブルを作成しデータを移行した場合、
インデックス等の情報は移行されていませんので、ウィザードでテーブルを作成するのではなく、
スクリプトの生成で一度スクリプトを作成して、移行するのが良いと思います。
bcpユーティリティ、BULK INSERT †
一括インポート操作と一括エクスポート操作
Identity列がある場合 †
Identity列がある場合も考慮が必要になります。
一括インポートの際の注意事項 †
一括インポートの際は、以下の項目に注意ください。
一括インポートのパフォーマンスの最適化
http://msdn.microsoft.com/ja-jp/library/ms190421.aspx
特定の一括インポート操作のパフォーマンスの最適化に影響を与える要素と高速化の方法
- テーブルに制約、トリガのいずれかまたは両方が含まれているかどうか。
- データのコピー先となるテーブルが空かどうか。
- テーブルにインデックスが含まれているかどうか。
- TABLOCK が指定されているかどうか。
データが 1 つのクライアントからコピーされているか、
複数のクライアントから同時にコピーされているか。
- データが SQL Server を実行している
2 台のコンピュータ間でコピーされるかどうか。
その他の移行方式 †
以下の方法が有用です。
- MS Access(経由のインポート / エクスポート)
- リンクサーバー
互換性レベル †
データベースの互換性レベルの表示または変更
http://msdn.microsoft.com/ja-jp/library/bb933794.aspx
互換性レベルには以下のものがあり、
- [SQL Server 2005 (90)]
- [SQL Server 2008 (100)]
- [SQL Server 2012 (110)]
データベース単位で動作を変える事ができます。
互換性レベルの詳細は以下を参照してください。
ALTER DATABASE 互換性レベル (Transact-SQL)
メタデータ移行 †
データベースを別のサーバー インスタンスに移行するときは、
ユーザーおよびアプリケーションに一貫した使用環境を提供するために、
移行先のサーバー インスタンスで、ログイン、ジョブ、権限などの
データベースのメタデータの一部またはすべてを作成し直す必要が生じる場合があります。
詳しくは、以下を参照下さい。
データベースを別のサーバー インスタンスで
使用できるようにするときのメタデータの管理
http://msdn.microsoft.com/ja-jp/library/ms187580.aspx
基本的に、新規構築手順を踏んだり、SQLスクリプト生成で対応します。
(masterやmsdbの復元での移行はしない)
この部分の操作イメージについては、
「SQL Server 2008 自習書シリーズ No.21移行とアップグレード」
を参照すると良いかと考えます。
サブシステムの移行 †
データ変換方式 †
基本的にファイルにエクスポートした後にデータ変換を行い、
データ変換後にファイルからインポートを行うのが高性能。
(ファイルtoファイルをシーケンシャル・アクセスで処理)
ただし、変換処理に検索SQLを使用したいケースもある
(通常、処理性能を考慮してTransact-SQLを使用する)。
このような場合、検索SQLでインデックス必要があるため、
データのインポート後に統計情報の更新を行っておくと良い。
(これを行わない場合、検索SQLで不適格なプランが使用され性能が出ない事がある)
また、上記の様にデータ変換にてインデックスを使用する場合、
インポート(インサート)時にはインデックスを定義しないで、
インポート(インサート)完了後にインデックスを定義するようにする。
これは、インデックスの更新も発生するためオーバーヘッドがあるためである。
特に、インデックスに対しシーケンシャルにインサートを実行しないと、
インデックス更新負荷が増加し、性能が大幅に劣化することがある。
(データ件数が多くインデックスサイズも大きい場合に限られる)
参考 †
アップグレードとマイグレーション †
自習書 †
SQL Server 2008 自習書シリーズ No.21移行とアップグレード
http://msdn.microsoft.com/ja-jp/sqlserver/cc720685.aspx
- ケース1
ハードウェアの老朽化によるハードウェア リプレイスを想定して、リプレイス後の
新規サーバーへ SQL Server 2008 をインストールし、そこへデータベースや
各種の設定(ログイン アカウントやリンク サーバー、ジョブ、保守計画、DTS)
を移行する手順を説明。
- アップグレード アドバイザによる移行チェックを行う
- 新規サーバーへの SQL Server 2008 をインストールする
- 新規サーバーへの SQL Server 2008 の最新の修正プログラムのインストールする
- SQL Server 2000 データベースを新規サーバー(SQL Server 2008)へ移行する
- システム データベース関連のオブジェクトを移行する
- レジストリに格納されている情報を再設定する
- 統計情報(Statistics)を更新する
- フルテキスト インデックスを再構築する(フルテキスト インデックスを利用している場合)
- 互換性レベルを調整する
- DTS パッケージを移行する(DTS パッケージを利用している場合)
- ケース2
旧システム環境を残したアップグレードを行う方法を説明。
- 現在のマスタ環境を丸ごと新規サーバーへ複製する(ハードウェア リプレイスを行う)
- アップグレード アドバイザによる事前チェックを行う
- 新規サーバーを SQL Server 2008 へアップグレードする
- SQL Server 2008 の Service Pack や修正プログラムをインストールする
- レジストリに格納されている情報を再設定する(サービスの自動起動やサービス アカウント、認証モード、TCP ポート番号など)
- 統計情報(Statistics)を更新する
- フルテキスト インデックスを再構築する(フルテキスト インデックスを利用している場合)
- 互換性レベルを調整する
- DTS パッケージを移行する(SQL Server 2000 の DTS パッケージを利用している場合)
- 保守計画を移行する(保守計画を利用している場合)
- ケース3
旧システム環境を残さず同一マシンでアップグレードを行う方法を説明。
- アップグレード アドバイザによる事前チェックを行う
- 新規サーバーを SQL Server 2008 へアップグレード インストールする
- SQL Server 2008 の Service Pack や修正プログラムをインストールする
- レジストリに格納されている情報を再設定する(サービスの自動起動やサービス アカウント、認証モード、TCP ポート番号など)
- 統計情報(Statistics)を更新する
- フルテキスト インデックスを再構築する(フルテキスト インデックスを利用している場合)
- 互換性レベルを調整する
- DTS パッケージを移行する(SQL Server 2000 の DTS パッケージを利用している場合)
- 保守計画を利用している場合は再作成する
SE の雑記 †
SQL Server 2000 のデータベースを SQL Server 2012 に移行 ≪ SE の雑記
http://engineermemo.wordpress.com/2012/04/18/sql-server-2000-%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92-sql-server-2012-%E3%81%AB%E7%A7%BB%E8%A1%8C/
- データベースのバックアップ / リストアを使用した移行
- データベースのデタッチ / アタッチを使用した移行
- インポート / エクスポートウィザードを使用したデータの移行
データベース友の会 †
第1回 SQL Server勉強会
データ移行のテクニックいろいろ
http://dbtk.main.jp/doc/20101106/Study_SQLServer_01_03.pdf
- データベース単位
- 完全バックアップ / 復元
- デタッチ / アタッチ
- SSIS(SQL Server Integration Services)
- テーブル単位
- SSIS
- bcpユーティリティ
- sqlcmdユーティリティ
- BULK INSERT
- 番外編:MS Access、リンクサーバー
Azure SQL データベースへの移行 †
Windows Azure SQL データベース (以前の SQL Azure) へのデータベース移行
http://msdn.microsoft.com/ja-jp/library/windowsazure/ee730904.aspx
- 既存データベースのスクリプト生成による SQL データベースへのデータベース移行
- Microsoft Sync Framework 2.1 の使用による SQL データベースへのデータベース移行
- データ層アプリケーションのエクスポート/インポートによるSQL データベースへのデータベース移行
- SQL データベースへのデータの移行
異種DBMSからの移行 †
SSMA †
Microsoft SQL Server Migration Assistant(SSMA:DB移行支援ツール)
SSMAはSQL Server以外の異種DBMSからの移行を支援します。
SSIS †
前述のインポート / エクスポートウィザード(=SSIS)も利用可能。
その他 †
Oracle Database から SQL Server への移行に関する情報は以下に纏まっています。
- Guide to Migrating from Oracle to SQL Server 2008
- Oracle から SQL Server 2008 への移行ガイド (上記資料の日本語訳)
その他の情報
Tags: :移行, :データアクセス, :SQL Server