複数のデータベースを更新する移行を管理するためのベスト プラクティスは何ですか?
-
12-09-2019 - |
質問
私のチームは、Martin Fowler 氏、Pramod Sadalage 氏らによって説明されているデータベース移行/データベース リファクタリングを管理するためのツールとプロセスを評価しています。アル。私たちは自動化され、反復可能でテスト可能なプロセスに興味があるため、デプロイするたびに SQL Compare を手動で実行するような手法には興味がありません。現在、継続的統合のために CruiseControl.NET を使用しています。
私たちの運用環境には複数の SQL Server 2000 データベース サーバーがあり、それらの間でレプリケーションが行われています。したがって、移行では、ソース データベース サーバーとターゲット データベース サーバーの両方のスキーマに変更が加えられます。
dbdeploy などのツールを使用してこのような移行を実行するには、サーバーの 1 つに対して移行を実行し、他のサーバーをリンク サーバーとして追加する必要があるようです。したがって、メイン サーバーに対して実行される単一のスクリプトは、リンクされたサーバーのいずれに対しても DDL を実行できます。
私の質問は次のとおりです。このアプローチはベスト プラクティスとみなされるのでしょうか、それとも複数のデータベース サーバーに影響を与える移行を適用するためのより良い手法はあるのでしょうか?
解決
私は、しかし、このアプローチには、本質的に間違って何も表示されません。あなたは1つがダウンであることを起こる、あなたは変更がそのサーバーに適用されていなかったかを知りたいならば他のすべてのサーバーをロールバックする必要はありません。
あなたは、変更の移行を開始する前に、もちろん任意の移行のための最初の、最も重要なベストプラクティスは、あなたが代わりに固体のバックアッププロセスを持っていることを確認作ってます。
他のヒント
のVisual Studio 2008(チームエディション、特にGDR)を使用すると、サーバにデプロイすることができます定義されたスキーマ/メタデータファイルに対してスキーマの自動展開を扱うことができます。これは、ビルド/デプロイプロセスに含めることができます。しかし、私は、複製し、スキーマの変更を超える問題がまだあると思う - /レプリケーションの設定を認識して理解して何のパッケージがありません。
は、例えば、我々は、加入者のカスタム複製手順を使用してスキーマの変更がパブリッシャから伝播するが、我々は時々手動でスクリプトが、我々は場所に持っている任意のカスタム・レプリケーションに依存して変化しなければなりません。カスタム複製procsのを使用しない場合、私はこれが移動するための方法だったと言う思います。
ここでレッドゲートで、我々は今、SQL比較し、SQLソースコントロールを使用して再現性の移行ソリューションを持っています。 SQLコマンドラインの比較は、したがって、継続的インテグレーションプロセスをサポートするために使用することができます。
http://www.red-gate.com/MessageBoard /viewtopic.php?t=14107する
これは、現在、アーリーアクセスビルドですので、我々はできるだけ多くのフィードバックを得ることに熱心だ。