1. ホーム
  2. データベース
  3. mssql2008

SQL Server 2012 を 2008R2 にダウングレードする方法

2022-01-20 10:51:36

I. 背景

ある病院では、クラスターサーバーとの互換性の問題から、データベースを2012から2008R2にダウングレードする必要がありました。そこで、データベースを一時的にミラーサーバーに切り替え、アプリケーションレベルのDMLキャッシュを有効にして、無停止ダウングレードを達成することにしました。

2012のバックアップは2008R2に直接リストアできず(MSSQLデータベースリストアhigh>>low非互換)、レプリケーションなど他の機能も使用できず、OGGはライブラリフルマイグレーションに適していないため、インポート・エクスポート・ダウングレードを使うことにしました。

II. ステップ

1. データベースオブジェクトスキーマのエクスポート(データベースを右クリック-タスク-スクリプトの生成)


なお、スクリプトの詳細オプションでは、2008R2バージョン用に生成されたフルライブラリスクリプトを選択し、インデックストリガーやその他のオプションはtrueを選択する必要があることに留意してください。

2. 2. ターゲットの 2008R2 ライブラリで上記のスクリプトを実行し、エラー報告を観察します。その多くは、まだデータがないため、通常のエラーです。

3. 全ログイン生成オプションを選択する必要がありますが、新しく作成されるログイン名とパスワードはランダムなので、各ログインのパスワードをあらかじめ取得しておく必要があります。また
生成されたスクリプトは自動的にログイン名を無効化するので、ログイン名ごとにロックを解除する必要があります。

4. データをエクスポートします。

データをエクスポートする際、ビューを選択しないでください。ビューはステップ1のスクリプトですでに構築されており、テーブル構造も構築されているため、インポートツールはデフォルトで既存のテーブルにデータを挿入することを選択します。

データのインポートには時間がかかり、サーバーリソースのボトルネックになるため、各テーブルのサイズに応じて、一度に50テーブルまでインポートするように設定するとよいでしょう。バッチ処理には、各テーブルの進行状況を確認でき、間違うたびに再インポートして多くの時間を無駄にするのを防ぐという利点もあります。

III. 概要

1. IDセルフインクリメントカラムを持つテーブルでは、ID挿入を開始する必要があります。

関連するテーブルが少ない場合は、最初のステップのアーキテクチャスクリプトでIDキーワードを調べ、ID挿入を有効にする必要があるテーブルを見つけることができ、多い場合は1つずつチェックを入れていきます。

2. SqlServerのソートルールが間違っていて、データをインポートできないので、データベースの構築時に一貫したソートルールを選択するように注意してください。

ソートルール でソートされます。

インスタンスレベルのソートルールは、新しいデータベースのデフォルトのソートルールに影響し、インスタンスレベルのソートルールを変更するには、すべてのデータベースを削除し、インスタンスを停止してから変更し、その後データをインポートし直す必要があります。

インスタンスのソートルールから継承したデータベースレベルのソートルールをパーソナライズ可能 alter データベース <db_name> collate Chinese_PRC_CI_AS

以上が今回の記事の全内容ですが、皆様の学習のお役に立てれば幸いです。また、Script Houseをより一層応援していただければ幸いです。