SQL Server 2000 のログ配布構成の SQL Server 2005 への移行
SQL Server 2000 のログ配布構成を SQL Server 2005 に直接アップグレードすることはできません。SQL Server 2000 では、ログ配布にデータベース保守計画ウィザードが必要でしたが、SQL Server 2005 のログ配布構成には不要になりました。したがって、サーバーを SQL Server 2005 にアップグレードした時点で現行のログ配布機能は使用できなくなります。
SQL Server 2000 のログ配布構成は、プライマリ データベースとセカンダリ データベースの間の同期を保守する際に移行することができます。このトピックでは、そのための方法を 2 つ紹介します。
- フェールオーバーを併用した移行を行うと、ログ配布構成の各サーバーをアップグレードする間のデータベースの可用性を維持することができます。この方法を使用する場合は、SQL Server 2000 のログ配布構成がフェールオーバー可能な構成になっている必要があります。
- フェールオーバーを併用しない移行を行うと、セカンダリ サーバーへのフェールオーバーが不要なので簡単です。この方法では、プライマリ サーバーを SQL Server 2005 にアップグレードする間、ログ配布データベースを使用できなくなります。
SQL Server 2005 へのログ配布構成の移行が完了したら、SQL Server 2000 のログ配布で作成したテーブルおよび SQL Server エージェント ジョブを削除できます。
制約
SQL Server 2000 ログ配布構成が SQL Server 2005 に移行した後、セカンダリ データベースをスタンバイ モードにすることはできません。
フェールオーバーを併用する移行
SQL Server 2000 のログ配布構成の高可用性を損なわないよう、ログ配布と併用できるフェールオーバー機能を使用して、データベースをオンラインに保つことができます。
フェールオーバーを併用した移行では、セカンダリ サーバー インスタンスをアップグレードする間、プライマリ サーバー インスタンスを一時的に元のバージョンの SQL Server にしておく必要があります。サーバー インスタンスのアップグレードでは、オンライン データベースのみがアップグレードされます。ログ配布セカンダリ データベースなどのオフライン データベースは、元のバージョンの SQL Server のままです。データベースがオフラインのままであれば、元のバージョンの SQL Server のログ バックアップは復元できます。したがって、フェールオーバーによりセカンダリ データベースが新しいプライマリ データベースとしてオンラインになるまでの間、ログ配布を続行することによりプライマリ データベースのログ バックアップをセカンダリ データベースに復元できます。
この方法を正常に行うには、SQL Server 2000 でログ配布を構成し、プライマリ データベースとセカンダリ データベースの間でフェールオーバーを実行できる構成にする必要があります。ここでは話をわかりやすくするため、SQL Server 2000 のログ配布プライマリ サーバー インスタンスをサーバー A、SQL Server 2000 のログ配布セカンダリ サーバー インスタンスをサーバー B と呼ぶことにします。
- サーバー B を SQL Server 2005 にアップグレードします。サーバー B をアップグレードするとき、ログ配布データベースはオフラインなので SQL Server 2000 データベースのままです。このデータベースは次の手順でアップグレードします。
メモ : この時点では、ユーザーは引き続きサーバー A のプライマリ データベースにアクセスできます。 - サーバー A のプライマリ データベースから必要なトランザクション ログをすべて適用し、NORECOVERY を指定してプライマリ データベースをバックアップすることにより、サーバー A からサーバー B へのフェールオーバーを行います。サーバー B のセカンダリ データベースをオンラインにすると、自動的に SQL Server 2005 データベースにアップグレードされます。データベースのアップグレード処理ではすべてのログが記録されます。
メモ : ユーザーは、アップグレード後にサーバー B のログ配布データベースを使用できるようになります。ただし、サーバー B で SQL Server 2005 ログ配布が構成されるまで、サーバー B のデータベースのログ バックアップをサーバー A のデータベースに適用することはできません。 - サーバー A を SQL Server 2005 にアップグレードします。ログ配布データベースはオフラインなので SQL Server 2000 データベースのままです。
- サーバー B で、サーバー B をプライマリ サーバーとし、サーバー A をセカンダリ サーバーとする SQL Server 2005 のログ配布を構成します。サーバー A へのトランザクション ログの配布を開始すると、最初のログ バックアップが適用された時点でサーバー A のログ配布データベースが SQL Server 2005 データベースにアップグレードされます。
サーバー B でログ配布を構成する際には、[セカンダリ データベースの設定] ダイアログ ボックスの [セカンダリ データベースの初期化] タブで、必ず [いいえ、セカンダリ データベースは初期化されています] を選択します。詳細については、「ログ配布を有効にする方法 (SQL Server Management Studio)」を参照してください。 - 必要に応じて、サーバー A を再度プライマリ サーバーにする場合は、サーバー A にフェールオーバーします。詳細については、「プライマリとセカンダリ間のロールの切り替え」を参照してください。
フェールオーバーを併用しない移行
フェールオーバーを使用せずに SQL Server 2000 のログ配布構成を SQL Server 2005 に移行することもできます。この方法では、ログ配布構成の両方のサーバー インスタンスを簡単にアップグレードできますが、プライマリ サーバー インスタンスを SQL Server 2005 にアップグレードする間はプライマリ データベースを使用できません。
- セカンダリ サーバー インスタンスを SQL Server 2005 にアップグレードします。セカンダリ サーバー インスタンスをアップグレードするとき、ログ配布データベースはオフライン状態なので SQL Server 2000 データベースのままです。
- プライマリ サーバーを SQL Server 2005 にアップグレードします。アップグレードの進行中はプライマリ データベースを使用できません。
- プライマリ サーバー インスタンスからセカンダリ サーバー インスタンスへのログ配布を構成します。[セカンダリ データベースの設定] ダイアログ ボックスの [セカンダリ データベースの初期化] タブで、必ず [いいえ、セカンダリ データベースは初期化されています] を指定します。詳細については、「ログ配布を有効にする方法 (SQL Server Management Studio)」を参照してください。
重要 : SQL Server 2000 のログ配布構成で使用したのと同一のバックアップ共有を指定してください。これにより、SQL Server 2005 でログ配布を有効にしたときに、セカンダリ データベースにすべてのログ バックアップが適切に適用されます。
ログ配布の再配置
ログ配布構成を移行するときに上記のいずれの方法も使用したくない場合、プライマリ データベースの完全バックアップおよび復元によってセカンダリ データベースを初期化し直すことで、ログ配布を始めから再配置できます。使用しているデータベースが小さい場合、またはアップグレード中は高い可用性が必要ない場合、この方法が適しています。
SQL Server Management Studio を使用したログ配布の有効化の詳細については、「ログ配布を有効にする方法 (SQL Server Management Studio)」を参照してください。
Transact-SQL を使用したログ配布の有効化の詳細については、「ログ配布を有効にする方法 (Transact-SQL)」を参照してください。
SQL Server 2000 のログ配布テーブルおよびジョブの削除
新しいログ配布構成を配置した後、コンピュータに残った SQL Server 2000 のログ配布テーブルおよびジョブを削除できます。
SQL Server 2005 によって、SQL Server 2000 で使用していたログ配布テーブルが使用されることはありません。したがって、サーバーを SQL Server 2005 にアップグレードした後、次に示すテーブルを削除できます。
- log_shipping_databases
- log_shipping_monitor
- log_shipping_plan_databases
- log_shipping_plan_history
- log_shipping_plans
- log_shipping_primaries
- log_shipping_secondaries
また、SQL Server 2000 で作成した SQL Server エージェントのログ配布ジョブも削除できます。