3

かなり大きくて複雑なDBがあり、フィールドでバージョン1からバージョン2にアップグレードする必要があります。2つの間でスキーマと重要なデータに多くの変更があります。

はい、これはバージョン管理されたアラである必要があることを私は知っています:http:
//www.codinghorror.com/blog/2008/02/get-your-database-under-version-control.html しかし、そうではありませんでした-そうなるでしょう私が終わったとき。

したがって、現在の問題は、すべてのコミットを実行するか、2つのバージョンのデータベースを比較しようとするかの選択に直面しています。これまでに試したことがあります:http:
//opendbiff.codeplex.com/
http://www.sqldelta.com/
http://www.red-gate.com/

ただし、同時にデータを実行しないため、スキーマアップグレードスクリプトを正常に生成できないようです。これにより、参照するテーブルが新しいため、テーブルに新しいキーを追加するときに外部キー違反が発生します。テーブルのスキーマは作成されていますが、テーブルに含まれるデータは作成されていません。可能性はありますが、ツールの別の部分を使用してから、2つのスクリプトを組み合わせる必要があります。

これは次のようなもののように見えるかもしれません
。2つのSQLServerデータベース(スキーマとデータ)を比較するのに最適なツールは何ですか? これは、私が試した既存のツールのほとんどを見つけた場所ですが、これまでのところ、これらのツールを使用して、動作するスキーマ移行スクリプトを作成することはできませんでした(データについてはあまり気になりませんが、外部キーに必要なデータが必要です-古いバージョンと新しいバージョンをデプロイしたので、どのtbhがすべての違いです)。

期待しすぎですか?私はあきらめて、私が持っているものを手動で縫い合わせる必要がありますか?または、すべてのコミットを実行して、アップグレードスクリプトを手動で作成しますか?

4

2 に答える 2

3

あなたが試したように見えるツールよりも強力なツールが利用できるとは思えません。それらが失敗した場合、私の自家製のバージョニングシステムもおそらくあなたをあまり助けません。

ただし、更新スクリプトを生成し、それを手動で編集してデータ変換を追加できるはずです。

または、更新スクリプトが実行されている間、外部キー制約を無効にすることができます。

于 2012-07-26T10:00:39.733 に答える
0

スキーマとデータを「同時に」実行するようなことはありません。1つの大きなスクリプトにそれらがある場合でも、最初にスキーマを実行し、次にデータを実行します。スキーマスクリプトが新しいテーブルを作成し、それに制約を追加した場合、それらのテーブルには行がないため、参照整合性違反エラーが発生する理由はありません。

いずれにせよ、xSQLスキーマ比較ツールとデータ比較ツールを試してみる必要があります。パフォーマンスと制御のレベルに感銘を受けるでしょう。

于 2013-12-06T16:00:42.100 に答える