2009-08-10 15 views
1

私はこれがこれらのボードで頻繁に質問されることを知っています。そして、通常はデータベースを変更する前にデータベースに加えられた変更をどのように管理するのかという問題がありました。ほとんどの場合、データベースをスクリプト化してソース管理に保存し、追加の更新をスクリプトとして保存していましたバージョンコントロールもあります(例:Tool to upgrade SQL Express database after deployment配備後にデータベースの更新を適用する方法は?

私の質問は、インストーラーでデータベースの更新を適用するのが最善でしょうか、または新しいバージョンが最初に実行されてデータベースに接続するときですか?これは、それぞれ独自のデータベースを持つ顧客に展開されるWinAppです。

+0

更新:これはクライアントサーバーアプリケーションです。 – superartsy

答えて

1

ことの一つは、スクリプトに追加する:データベースをバックアップする(あるいは少なくとも表は、あなたが変更している!)の変更を適用する前に。ユーザー私は、インストール時にそれが起こる好むだろうと思うし、インストーラが障害発生時に自分自身をロールバックできることをさらに少し行くよう

0

。ここで私が考えるのは、アップデートをインストールしているときに、アップデートが実際に行われ、成功したことを知りたいときです。次回は、何かが失敗し、私はすべてのデータを失う可能性があると私に知らせる次回実行時にメッセージが出るのを望んでいません。私は、システム管理者はインストール時間のフィードバックを高く評価していると思います(もちろん、Webアプリケーションがネットワークにインストールされていないかどうかは関係ありません)。また、ראובןは言ったように、データベースをバックアップすることは便利です。

0

あなたは、アプリケーションのアーキテクチャについて多くを語っていないが、インストーラが含まれているので、私はそれは、クライアント/サーバーアプリケーションの前提としています。

サーバーのインストーラを使用している場合は、あなたがそれを配置する場所のデータベース構造は一度だけ変更するつもりされているので、それは、です。クライアントインストーラは変更について知る必要があるため、データベースのバージョン変更を検出し、古いクライアントがクライアントアップデートをサーバーから自動的にダウンロードして適用できるようにするのは良いことです。

あなたが唯一のクライアントインストーラを使用している場合、私はまだそれが(多分、データベースを更新するための実行可能なオフ発射するカスタムアクションとして)そこにそれを置く方が良いと思います。概念的には、新しいバージョンのインストーラや初めてのユーザーが、とにかくデータベースへの変更を放棄しなければならないため、実際には問題にはなりません。データベースの変更はデータベースに構造的ロックをかけることになるので、現実的に言えば、データベースの更新を適用するには、その時点で誰もがシステムから追い出される必要があります。もちろん

それはクライアント・サーバーではない場合、これはすべてのBSです。

関連する問題