web-dev-qa-db-ja.com

SQL Server 2008から2005へのダウングレード

SQL 2008を使用して構築されたデータベースファイルは2005と互換性がありません。回避策はありますか?

32
Sevki

サードパーティのツールは必要ありません。 SQL Server 2008 Management Studioは、「スクリプトデータベース」ウィザードに「スクリプトデータ」オプションを追加したため、データベースをダウンコンバートするための非常に強力なツールを提供してくれました。

SQL2008 SSMSでDBを右クリックし、[タスク]、[スクリプトの生成]の順に移動します

ウィザードをウォークスルーし、テーブル/ビューオプションの下の「スクリプトデータ」で「True」を選択していることを確認します。すべてのオブジェクトを選択し、それが2005サーバーで作成するスクリプトを実行します。 (元のデータベースが非常に大きい場合、作成されるスクリプトは大規模になる可能性があることに注意してください!)

SQL2005サーバーに対してウィザードを実行して、SQL2005データベースをSQL2000にダウンコンバートすることもできます(もちろん、ワークステーションに2008ツールをインストールする必要があります)。

16
BradC

1つのSQL Serverインスタンスから別のインスタンスにデータをBCPできます。これは、あるバージョンから別のバージョンにデータをコピーする最も速い方法です。データ量によっては時間がかかる場合があります。

16

残念ながら、2008年の形式から2005年の形式にDBをダウングレードする直接的な方法はありません。

私がこれを過去に行った方法(実際には古いバージョンのSQLサーバーを使用していますが、プロセスは同じです)は次のとおりです。

  1. まだ実行していない場合は、SQL2008インスタンスにDBを復元します
  2. SQL2005インスタンスで、正しい構造(テーブル、インデックス、制約、ビュー、プロシージャ、トリガーなど)を使用して空のDBを構築します。うまくいけば、既存のビルドプロシージャやソースコードからこれを実行できますが、そうでない場合は、SQL Server Managerを使用して2005 DBのすべてのスクリプトを作成し、2008インスタンスの空のスクリプトで結果を実行できます。
  3. 2つのインスタンスがお互いを認識できること(つまり、インスタンスが異なるマシン上にある場合、接続をブロックするファイアウォールがないこと)を確認し、 sp_addlinkedserver を使用してそれらをリンクします。
  4. すべてのデータを1つのDBから別のDBにコピーします。トリガーに外部キー制約や同様の問題がない場合は、DBをリンクし、テーブルのリストにカーソルを合わせて(sys.objectsから選択)、実行するだけです。
    INSERT destinationserver.destinationdb.schema.table SELECT * FROM sourcedb.schema.table
    (またはINSERT schema.table SELECT * FROM sourceserver.sourcedb.schema.tableインスタンスをそのようにリンクしている場合)
    各テーブル。テーブル間の整合性を強制する制約とトリガーがある場合は、もちろん、特にそれら自体に基づく制約を持つテーブルのような循環制約がある場合(階層を1つ保持している場合)、これらの操作の順序についてもう少し賢くする必要がありますデータ、可能な例として)。

最初にデータをコピーし、ステップ3の後に他のすべての構造(インデックス、プロシージャ、トリガーなど)を追加する方が効率的です。これにより、制約とトリガーによって引き起こされる行挿入の順序付けの問題を回避し、すべてのデータが追加されるため、理論的にはそれらを構築するよりも速く終了する必要があります。ただし、テーブルにクラスター化インデックスがある場合、データを追加する前にこれらを作成してから、データを追加すると、作成後の作成が速くなります。

もちろん、これはすべてのオブジェクトがSQL 2008固有の機能を使用していないことを前提としています。これらの機能を使用すると、スキーマの再構築時にエラーが発生した場合に、そのようなことを見つけて修正できます。コードのいずれかが、SQL Serverのバージョン間で異なる公式に定義されていない動作に依存している場合は、さらに微妙でわかりにくいバグを見つけて、後で解決することができます。

15
David Spillett

同様の状況に直面し、データベース公開Wizard=を使用して、SQL Server 2008データベースからSQL Server 2005のスキーマとデータをスクリプト化しました。

SQL ServerホスティングWebサービス(およびツールキット)

データベース公開ウィザード

7
CoderHawk

まず、データベースをスクリプト化し、ダウングレードするタイプを指定するバージョンで確認する必要があります。そして、上位バージョンから下位バージョンにデータをコピーするために、SQLデータ比較はあなたのためのトリックを行います。

幸運を!

1
Mbongeni