5

データベース テーブルのソース コントロール管理と自動展開 (構成管理) をどのように処理しますか。私は SQL Server 環境で作業していますが、スクリプトを作成して、ストアド プロシージャ、トリガー、関数、さらにはジョブのファイルを作成するのは非常に簡単です。また、新しい db テーブルの作成をスクリプトで処理するのも簡単です。ただし、後でそのテーブルを変更したい場合は、データを失うことを恐れて、必ずしもテーブルを削除して新しいフィールドで再作成することはできません。この問題に対処する自動化された方法はありますか? 新しく変更されたテーブルを更新した後、一時テーブルをスクリプト化してバックフィルしますか? (データが多いと荒いかもしれません)

どんな提案でも大歓迎です。

4

6 に答える 6

2

Red-gate の SQL Compare のようなツールは、完全なスクリプトを作成するのに非常に役立ちます。オブジェクトが正しい順序でスクリプト化されていることを確認するために、手動で調整する必要がある場合があります。テーブルだけでなく、トリガーや制約なども必ずスクリプト化してください。一般に、特にテーブルが非常に大きい場合は、削除して作成する代わりに、変更コマンドを使用することをお勧めします。

すべてのテーブルと関数、およびストアド プロシージャもソース管理下にある必要があるため、必要に応じて古いバージョンに戻すことができます。また、DBA は Source CONtrol にないものを定期的に削除するため、開発者は削除を忘れることがありません。

もちろん、本番環境に昇格するすべての開発スクリプトは、最初に QA サーバーまたはステージング サーバーで実行して、本番環境で実行する前にスクリプトが適切に (そして変更を加える必要なく) 実行されることを確認する必要があります。また、prod で実行するタイミングも考慮する必要があります。特に忙しい時期にユーザーをロックアウトしたくない場合は、金曜日の午後遅くにスクリプトを本番環境にロードすることは通常悪い考えであることが示されています。

于 2008-09-19T21:21:02.917 に答える
2

私たちは、Oracle DB で同様の経験をしました。パッチを作成するために、SVN と自動化されたスクリプト (SVN から変更をプルする) を採用するための手順を確立しました。詳細については、 http: //www.scmsupport.com/scm.php?go=home.htmlおよびhttp://scmsupport.wordpress.com/を参照してください。

于 2012-12-21T11:09:23.630 に答える
1

初期作成スクリプトは自動的に作成できますが、実際には ALTER スクリプトでカスタム処理を行う必要があるため、ALTER スクリプトはケースバイケースで手動でコーディングする必要があります。

いずれにせよ、変更ごとに適用スクリプトとロールバック スクリプトを作成し、それらを実行するインストーラー スクリプト (およびもちろんそれらをロールバックするロールバック) を作成する何らかの方法が必要です。このようなインストーラーは、おそらくスキーマのバージョンを記憶し、必要なすべての移行を正しい順序で実行する必要があります。

ここで私の記事を参照してください:

http://marksverbiage.blogspot.com/2008/07/versioning-your-schema.html

于 2008-09-19T20:24:26.813 に答える
1

スキーマの開発、変更の開発、それらの変更のバージョン管理に役立つツールがあり、バージョン間の違いを比較したり、DDL の変更を行うための SQL を生成したりするのに役立ちます。

たとえば、Embarcadero Change Managerおよび Embarcadero が提供するその他の製品を確認してください。

于 2008-09-19T20:21:46.243 に答える
0

これは、既存のデータをどのように処理するか、およびスキーマの変更の範囲によって異なりますが、Management Studio でも、変更をコミットする前に、すべての変更のスクリプトを生成できます。

大量のデータの場合、または制約や外部キーがある場合、単純な ALTER 操作でもかなりの時間がかかることがあります。

于 2008-09-19T20:19:39.477 に答える
0

言い忘れましたが、スキーマの変更を本番環境にロードする前に、適切なデータベースのバックアップ セットがあることを確認してください。転ばぬ先の杖。

于 2008-09-19T21:23:24.440 に答える