データベース エンジンのアップグレードに関する注意点

SQL Server データベース エンジンを SQL Server 2008 にアップグレードできます。 サポートされるアップグレード パスについては、「バージョンとエディションのアップグレード」を参照してください。

SQL Server セットアップ プログラムを使用すると、ユーザーの介入を最小限に抑えながら、以前のバージョンの SQL Server をアップグレードすることができます。 ただし、適切な準備を行い、アップグレード プロセスを理解しておくことで、問題の発生防止や解決が容易になります。

ここでは、アップグレード プロセスの準備および理解に必要な情報を提供します。内容は以下のとおりです。

  • 既知のアップグレード問題

  • アップグレード前の作業と注意点

  • データベース エンジンをアップグレードするための手順のトピックへのリンク

  • データベースを SQL Server に移行するための手順のトピックへのリンク

  • フェールオーバー クラスターに関する注意点

  • アップグレード後の作業と注意点

既知のアップグレード問題

データベース エンジンをアップグレードする前に、「SQL Server データベース エンジンの旧バージョンとの互換性」を確認してください。 サポートされるアップグレード シナリオとアップグレードの既知の問題については、「バージョンとエディションのアップグレード」を参照してください。 その他の SQL Server コンポーネントの旧バージョンとの互換性については、「旧バージョンとの互換性」を参照してください。

重要な注意事項重要

SQL Server のいずれかのエディションから別のエディションへアップグレードする前に、現在使用している機能がアップグレード先のエディションでサポートされているかどうかを確認します。

アップグレード前のチェックリスト

以前のバージョンの SQL Server のアップグレードは、SQL Server セットアップ プログラムでサポートされています。 また、以前の SQL Server バージョンのデータベースを移行することもできます。 移行は、同じコンピューター上の SQL Server インスタンス間で行うことも、別のコンピューター上の SQL Server インスタンスから行うこともできます。 移行オプションには、データベース コピー ウィザードの使用、バックアップ機能と復元機能、SQL ServerIntegration Services インポート/エクスポート ウィザードの使用、および一括エクスポート/一括インポート方式があります。

データベース エンジンをアップグレードする前に、必ず以下を実行してください。

SQL Server をアップグレードする前に、以下の問題点を確認して変更を行います。

  • SQL Server の 64 ビット版から SQL Server 2008 の 64 ビット版にアップグレードする場合は、Analysis Services をアップグレードしてからデータベース エンジンをアップグレードする必要があります。

  • SQL Server エージェントが MSX/TSX リレーションシップにリストされている SQL Server のインスタンスをアップグレードする場合、マスター サーバーをアップグレードする前に対象サーバーをアップグレードします。 対象サーバーをアップグレードする前にマスター サーバーをアップグレードすると、SQL Server エージェントは、SQL Server のマスター インスタンスに接続できなくなります。

  • アップグレード対象のインスタンスからすべての SQL Server データベース ファイルをバックアップして、必要な場合はこれらのファイルを復元できるようにします。

  • アップグレード対象のデータベース上で適切なデータベース コンソール コマンド (DBCC) を実行して、データベースの一貫性を確保します。

  • SQL Server コンポーネントおよびユーザー データベースのアップグレードに必要なディスク容量を見積もります。 SQL Server コンポーネントで必要とされるディスク容量については、「SQL Server 2008 のインストールに必要なハードウェアおよびソフトウェア」を参照してください。

  • 既存の SQL Server システム データベース (master、model、msdb、および tempdb) が自動拡張するように構成されていることを確認し、それらが十分なハード ディスク容量を備えていることを確認します。

  • すべてのデータベース サーバーが master データベースにログオン情報を持っていることを確認します。 システム ログオン情報は master データベースに格納されるので、データベースを復元するにはこの作業が重要になります。

  • すべての起動ストアド プロシージャを無効にします。アップグレード プロセスでは、サービスの起動および停止はアップグレード中の SQL Server インスタンス上で行われます。 起動時にストアド プロシージャを実行すると、アップグレード プロセスをブロックする可能性があります。

  • レプリケーションを停止し、レプリケーション ログが空であることを確認します。

  • SQL Server 2000 データベース エンジンのインスタンスをアップグレードしても、max worker threads の構成値は保持されます。 ただし、アップグレードする前に max worker threads の値を 0 に変更して、データベース エンジンで最適なスレッド数が計算されるようにすることをお勧めします。 詳細については、SQL Server オンライン ブックの「max worker threads オプション」を参照してください。

  • SQL Server との従属関係を持つすべてのサービスを含むすべてのアプリケーションを終了します。 アップグレード実行中のインスタンスにローカル アプリケーションが接続されている場合は、アップグレード操作が失敗する場合があります。

  • データベース ミラーリングを使用している場合は、SQL Server オンライン ブックの「サーバー インスタンスのアップグレード時に、ミラー化されたデータベースのダウンタイムを最小化する方法」を参照してください。

データベース エンジンのアップグレード

現在インストールされている SQL Server 2000 または SQL Server 2005 を、バージョン アップグレードで上書きすることができます。 SQL Server セットアップの実行時に以前のバージョンの SQL Server が検出された場合は、以前の SQL Server プログラム ファイルがすべてアップグレードされ、以前の SQL Server インスタンスに保存されているすべてのデータが保持されます。 また、以前のバージョンの SQL Server オンライン ブックがコンピューター上に元の状態のまま残ります。

注記注意

SQL Server をアップグレードすると、以前の SQL Server インスタンスは上書きされて、コンピューター上に存在しなくなります。 アップグレードする前に、SQL Server データベースおよび以前の SQL Server インスタンスに関連するその他のオブジェクトをバックアップしてください。

データベース エンジンをアップグレードするには、SQL Server インストール ウィザードを使用します。

注記注意

コンピューターに SQL Server 2000 管理ツールおよび SQL Server 2008 の既定のインスタンスがインストールされている場合は、SQL Server セットアップから SQL Server 2000 の既定のインスタンスをインストールできます。 ただし、この操作によってインストール済みの SQL Server 2008 インスタンスが無効になります。 そのため、SQL Server 2000 管理ツールと SQL Server 2008 の既定のインスタンスがコンピューターに既に存在する場合は、SQL Server の既定のインスタンスをインストールしないでください。

アップグレード後のデータベース互換性レベル

tempdbmodelmsdb、および Resource データベースの互換性レベルは、アップグレード後、100 に設定されます。 master システム データベースは、互換性レベルが 80 を下回っている場合は、アップグレード前の互換性レベルを保持します。 アップグレード前の master の互換性レベルが 80 を下回っている場合は、アップグレード後、80 に設定されます。

アップグレード前のユーザー データベースの互換性レベルが 80 または 90 の場合は、アップグレード後も互換性レベルは変わりません。 アップグレード前の互換性レベルが 70 以下の場合、アップグレードされたデータベースの互換性レベルは 80 に設定されます。これは、SQL Server 2008 でサポートされている下限の互換性レベルです。

注意注意

新しいユーザー データベースには、model データベースの互換性レベルが継承されます。

データベースの移行

SQL Server でバックアップと復元またはデタッチとアタッチの機能を使用して、ユーザー データベースを SQL Server インスタンスに移行することができます。

重要な注意事項重要

移行元と移行先両方のサーバーで同一の名前を持つデータベースは移動またはコピーすることができません。 このような場合は、"既に存在します" と通知されます。

詳細については、「データベース コピー ウィザードの使用」または「データベース コピー ウィザードにより SQL Server をアップグレードする方法」を参照してください。

データベース エンジンのアップグレード後の作業

データベース エンジンをアップグレードした後は、次の作業を実行します。

  • サーバーを再登録します。 サーバーの登録方法の詳細については、SQL Server オンライン ブックのトピック「サーバーの登録」を参照してください。

  • フルテキスト カタログを再作成します。 この操作により、SQL Server インストールのパフォーマンスが向上します。 詳細については、SQL Server オンライン ブックの「sp_fulltext_catalog (Transact-SQL)」を参照してください。

  • SQL Server 2000 からアップグレードした後は、すべてのデータベースの統計を更新します。 SQL Server データベースのユーザー定義テーブル内の統計を更新するには、sp_updatestats ストアド プロシージャを使用します。 この手順は、SQL Server 2005 からアップグレードする場合には不要です。

  • 行数やページ数の誤りを修正するには、DBCC UPDATEUSAGE をすべてのデータベースに対して実行します。

  • SQL Server インストールを構成します。 システムのセキュリティを向上するため、SQL Server では、主要なサービスと機能を個別にインストールし、有効化できるようになっています。

  • SQL Server 2005 によって生成され、パーティション テーブルおよびパーティション インデックスに対するクエリに適用される USE PLAN ヒントを検証または削除します。

    SQL Server 2008 では、パーティション テーブルとインデックスでのクエリの処理方法が異なります。 SQL Server 2005 で生成されたプランに USE PLAN ヒントを使用する、パーティション分割されたオブジェクトのクエリには、SQL Server 2008 で使用できないプランが含まれる場合があります。 SQL Server 2008 にアップグレードした後は、次の手順を実行することをお勧めします。

    USE PLAN ヒントがクエリ内で直接指定されている場合 :

    1. USE PLAN ヒントをクエリから削除します。

    2. クエリをテストします。

    3. オプティマイザーによって適切なプランが選択されない場合は、クエリをチューニングし、USE PLAN ヒントを必要なクエリ プランと共に指定することを検討します。

    USE PLAN ヒントがプラン ガイドで指定されている場合 :

    1. sys.fn_validate_plan_guide 関数を使用して、プラン ガイドの有効性を確認します。 また、SQL Server Profiler で、Plan Guide Unsuccessful イベントを使用して無効なプラン ガイドを確認することもできます。

    2. プラン ガイドが有効でない場合は、プラン ガイドを削除します。 オプティマイザーによって適切なプランが選択されない場合は、クエリをチューニングし、USE PLAN ヒントを必要なクエリ プランと共に指定することを検討します。

    USE PLAN ヒントがプラン ガイドで指定されている場合、無効なプランが原因でクエリが失敗することはありません。 この場合、USE PLAN ヒントを使用せずにクエリがコンパイルされます。 パーティション分割されたオブジェクトでのクエリ処理の詳細については、「パーティション テーブルとパーティション インデックスに対するクエリ処理の機能強化」を参照してください。

アップグレード前にフルテキストが有効または無効にマーク付けされていたデータベースは、アップグレード後もその状態を維持します。 アップグレード後は、フルテキストが許可されているすべてのデータベースで、フルテキスト カタログが再構築され、自動的に生成されます。 この処理には、多くの時間とリソースが必要になります。 次のステートメントを実行すると、フルテキストのインデックス処理を一時停止することができます。

EXEC sp_fulltext_service 'pause_indexing', 1

フルテキスト インデックスの作成を再開するには、次のステートメントを実行します。

EXEC sp_fulltext_service 'pause_indexing', 0

変更履歴

変更内容

「データベース エンジンのアップグレード後の作業」セクションで、SQL Server 2000 からアップグレードした後に統計を更新するよう、推奨事項を変更しました。