5

複数のクライアントに個別に配布されているac#.netアプリケーションがあります。時々、いくつかの新機能を追加したり、いくつかのバグを修正したり、DBに頻繁に変更を加えたりします。クリックワンスデプロイメントアプローチを使用して、exeをクライアントPCに更新します。SQLサーバーインスタンスがシステムにインストールされています。

exeの更新ごとにSQLデータベースを更新する方法を知りたいです。

クライアントがバージョン2で作業していて、バージョン3に更新されていない可能性があることを覚えておいてください。ただし、バージョン4がリリースされると、クライアントはアプリケーションを更新します。そのような場合、私は彼のデータベースで2つのスクリプトを実行する必要があります。1つはバージョン3用で、もう1つは現在のバージョンである4用です。

ありがとう

4

4 に答える 4

2

あるバージョンを別のバージョンに更新できるストアドプロシージャ/スクリプトがあり、それを実行する他のexeをロードできないと仮定すると、新しいバージョンの開始時にそれを実行するための呼び出しを含めるだけではどうでしょうか。 ?ソフトウェアがロードされたときに、正しいバージョンのデータベースを使用しているかどうかを確認するチェックを行います。使用していない場合は、データベースを更新します。バージョン2から4への移行などの問題を処理するには、データベース自体が現在のバージョンを追跡していることを確認してください。

于 2012-05-03T09:41:08.203 に答える
0

sqlcmdを試して、DBの更新を使用してアプリケーション内からexeを呼び出すことができます。

于 2012-05-03T09:24:56.287 に答える
0

これは、「データベースの移行」を使用することで最もよく解決されるシナリオです。.netエコシステムには、それを支援するためのツールがいくつかあります。一部のツールには個別のランナーが付属していますが、その他のツールは、プロジェクトに含めることができる.netアセンブリとしてコンパイルできます。

例は次のとおりです。

于 2012-05-03T11:37:38.230 に答える
0

この問題に取り組むために、2つのコンポーネントを作成しました。

1.1。

特定のSQLDBと、scruiptファイルを含むSQLソリューションフォルダーを分析するWinFormsアプリ。次に、スクリプトファイルをSQLオブジェクトに計算し、さまざまなスクリプトファイルの実行順序を含む「Manifest.xml」を作成します。

テーブルのスクリプトファイルには、テーブル構造をアップグレードするためのバージョンごとの手順が含まれています。

次に、ビルダーは、関連するスクリプトファイルをマニフェストとともに特定の場所にコピーします。通常、アプリフォルダーの過密を心配しない場合は、アプリと一緒にそれらをコピーします。それ以外の場合は、パスワードで保護された7-zipに圧縮します。

2.2。

(必要に応じて)マニフェストを解凍して実行するコマンドラインアプリ。実際の作業は、アプリに統合できる別のクラスライブラリで行われます。

次に、アプリでappversion> dbversionを実行するたびに、アップグレードを実行します。

1人の顧客にステージングと本番のセットアップのみがあり、通常はアプリが関与しないセットアップでは、スタンドアロンのCLIアプリを手動で使用します。これは、更新をプッシュする簡単な方法です。特に、20のビューを変更し、それらすべてをSQL Mgt Studioにコピー/貼り付けしたくない場合は特にそうです:p

于 2012-05-03T11:54:51.907 に答える