1

C#、Entity Framework、SQLServerを使用してMVC3Webサイトを開発する準備をしています。

このウェブサイトは重要な仕事のために構築されており、失われたデータは絶対に許可されていないものです!私の知る限り、データベースを進化させた経験はありませんでしたが、このプロジェクトは段階的な開発手法を使用しながら進化できるはずです。従うべきガイドラインがあり、単一のエラーなしでそれをどのように進化させることができるかを知っていますか?データベースの初期設計などの観点から。ただ、0DataLostが最優先の要件です。

私はこの2つの質問に対する答えが必要であり、いくつかの経験がこの問題で私を導くことができることを願っています

  1. 同じテーブル内の他のデータに影響を与えずにデータベースインクルードテーブル、列を更新する方法
  2. リモートデータベースを更新する方法(たとえば、C#ウィンドウアプリとデータベースは私にはありません)

1.質問の場合、データベースは私のWebサーバーにありますが、質問2の場合、データベースはユーザー側にとどまっています。

4

1 に答える 1

1

答えは次のとおりです。要件が満たされる方法でアップグレードプロセスを設計するのはあなたの義務です。あなたのためにこれを行う自動魔法はありません。

このプロセスには通常、データベース構造を変更するアップグレードSQLスクリプトの作成が含まれ、必要に応じて、データが失われないようにメインテーブルの構造を変更しながら、データを一時テーブルに移動することもできます。また、データベースのバージョンを特別なテーブルに保持し、更新を実行する前にそれをチェックして、更新スクリプトが予想される古いバージョンで実行されていることを確認することもできます。

RedGateSQLCompareやVisualStudioDatabaseツール(PremiumおよびUltimateバージョンのみ)のようなツールがあり、古いデータベース、新しいデータベースを取得して、古いデータベーススキーマを新しいデータベーススキーマにアップグレードできるように差分スクリプトを作成できます。これはほとんどのシナリオで機能しますが、テスト環境で常に慎重に結果をテストする必要があります。可能であれば、本番データベースのバックアップでテストすることをお勧めします。

何か問題が発生した場合にデータの損失を回避するにはどうすればよいですか?変更を加える前にデータベースをバックアップし、問題が発生した場合に古いデータベースを復元する非常に簡単な方法は1つだけです。バックアップはSQLでスクリプト化することもできます。バックアップが成功しない場合は、本番データベースに触れないでください。

クライアント側のデータベースをアップグレードする方法は?同じプロセスを使用しますが、たとえばWiXで作成されたインストールパッケージ(.msi)にすべてをラップします。

于 2011-07-07T08:30:25.747 に答える