0

同一のスキーマを持つ 2 つの SQL Server 2000 データベースがあります。

特定のテーブルの行のサブセットをデータベース A からデータベース B に移動する必要があります。また、関連するすべての行を他のテーブルからデータベース B にも移動する必要があります。

これは簡単な例です

各 DB に、Authors、Books、Awards、Sales というテーブルがあるとします。

これらのテーブルのそれぞれに、PK である ID 列があるとします。これらの列の名前は、AuthorID、BookID、AwardID、SaleID です。

「Stephen King」をデータベース A の Authors テーブルからデータベース B に移動する必要があります。データベース A の Stephen King レコードの AuthorID が 12 であるとします。また、Books テーブルのすべての行を FK で移動する必要があります。 AuthorID は 12 です。 award テーブルと sales テーブルと同じです。

「SET IDENTITY_INSERT」コマンドを使用してこれを処理するために、データベース B がまったく新しいときに以前にコードを書きました。そのため、Stephen King は各テーブルで同じ AuthorID を持つことになりました。

現在の問題は、スタッフがデータベース B に新しいレコードを追加するのに忙しく、PK 競合を起こさずにデータベース A からデータベース B にレコードを単純に移行できないことです。データベース B が移行されたレコードに新しい PK 値を割り当て、それらを追跡する以外に選択肢はありません。これにより、関連するレコードが取得されたときに適切な FK が使用されます。

この単純化された例では、コーディングする必要がある 4 つのテーブルがあります。

私の実際の例では、46 個のテーブルがあります。

これを手作業でコーディングするのは楽しみではありません。

このプロセスを簡単にするために購入できる既存のツールはありますか?

4

2 に答える 2

0

簡単な解決策の 1 つは、ソース データベース内のすべての PK と FK を負の数に変更することです。次に、衝突なしでそれらを新しいデータベースに挿入できます。

于 2012-09-13T16:55:56.367 に答える
0

両方のシステムに適用できる一意の制約を作成できるテーブルの完全に異なるフィールドのセットを特定できる場合は、それを使用して 2 つのシステムを比較し、データが同じであることを確認することもできます。2 つのシステム間でデータを一意に識別する方法がなければ、それらの間でデータを移行する機能的な方法はありません。

于 2012-09-13T18:14:05.787 に答える