データベーススキーマのマージ

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  データベーススキーマの比較 >

データベーススキーマのマージ

2つのデータベーススキーマ間のスキーマ比較を実行すると (「左側」 と 「右側」 )、 テーブル 差分を2つのデータベースの間で同期化 (マージ) することができます。マージ操作はデータベースの構成に影響しますが、直接適用されません。代わりに、 DatabaseSpy はマージスクリプトを生成します。生成された マージスクリプトは、左側のデータベースから 「右側」のデータベースに、または、その逆に変更を適用することができます。

 

メモ:(列、キー、または、制約への変更を含む)テーブルの構造 の比較後の差分のみをマージスクリプトは同期化します。テーブルの構造 の比較後の差分のみをマージスクリプトは同期化します (ストアドプロシージャ、関数、ビューなどの)他のオブジェクトの型の間の差分のマージ はサポートされません。

 

マージスクリプトが生成されると、DatabaseSpy 内で直接マージスクリプトを実行することを選択でき、または、ファイルに保存し後に実行のために使用します。

 

データベースに対してマージスクリプトを実行する前に、レビューすることが奨励されます。データベーススキーマ間の構造差分のサイズが大きい場合、生成された マージスクリプトのサイズも同様に大きくなります。ターゲットデータベース内の複数のアイテムの更新の際に発生する問題を回避するために、小さいスケールのスクリプトを生成し、段階的に適用することもできます。 例えば、マージに含まれる特定のアイテム (列、 制約) を選択し、その選択されたオブジェクトのためにのみ、スクリプトを生成することができます。

 

 

マージスクリプトを生成して実行する方法:

1. データベーススキーマの比較を実行します (次を参照してください: データベーススキーマの比較の実行).
2.必要に応じて、特定のアイテムのみをマージするには、 コンポーネント内のこれらのアイテムを Ctrl+Click を使用して選択します。 左側、または、右側のコンポーネント内のアイテムを選択しても、マージの方向に影響はありません (例えば、右側のコンポーネント内のアイテムを選択し、左側から右側へのマージを選択することができます)。

 

重要点: 親のみが選択されている場合、テーブル、または、列の子要素は、自動的にマージに含まれます。 このため、親オブジェクト (例えば、 テーブル)を選択する場合、 (列、または、制約などの) マージされる子アイテムも含まれていることを確認してください。例えば、(下に示されるように)列名が同じで、データ型が異なる場合、有効なマージスクリプトを作成するためにデータ型アイテムを選択する必要があります。

diff_select-child

 

3.次のいずれかを行ってください:

 

スキーマ比較 メニューかマージスクリプトの表示: 左側から右側へらを選択します。 .
コンポーネントを右クリックし、コンテキストメニューから「マージスクリプトの表示: 左側から右側へ」を選択します。
「選択された範囲を左側から右側へマージ」 ic_merge-selected-left2right ツールバーボタンをクリックします。

上のコマンドは、左側から右側へデータベース構造をマージすると想定します。それ以外の場合、 対応するリバース (右側から左側へ) コマンドを使用します。

 

4.必要に応じて、マージスクリプトをプレビュー、編集し、 「実行」 ic_execute-sql ボタンを押してスキーマを実際にマージします。

(C) 2019 Altova GmbH