2009-06-02 3 views
0

複数のデータベースを使用するwinformアプリケーションを配備する必要があります。私は彼らがローカルで相互作用するように私のアプリでそれらを展開する必要があります。SQLをデプロイしてDBを添付するには:ClickOnce?

ClickOnceを使用することはできますか、別のアプローチを検討する必要がありますか?私はClickOnceの例をいくつか見つけましたが、DBはソリューションに含まれているとみなしていましたが、ここではそうではありません。

このアプリはWebアプリケーションであったが、DBとDALはそれを反映している。私はまた、中央のものにこれらのローカルデータベースのマージレプリケーションを使用しています。

DBの作成スクリプトを作成し、インストール中に何らかの方法でそれらを実行し、マージレプリケーションをオフにしてテーブルを埋めるのがよいでしょうか? DBには100を超えるsprocも含まれていますが、これはMerge Replでうまくいきませんので、最初のインストールでもそれらを含めることができる必要があります。

そうでなければ、インストール中にsprocsを含むDBをどのように接続するのか分かりましたが、その方法もわかりません。

私は、4つの別個のSQL DBを使ってこのアプリケーションをどのように配備するのかに関するすべての提案を受け付けています。

ありがとうございます!

答えて

2

ローカルでSQL Expressを使用している場合は、接続文字列の一部としてデータベースをアタッチすることができますが、これはレプリケーションでうまくいくことはわかりません。データベースをローカルに接続し、そこにデータベースのバージョン番号を保持するリビジョンテーブルを置くことを検討することもできます。あなたのアプリケーションは、データベースのリビジョンをチェックし、SQLスクリプトを実行してデータベースを最新のリビジョンにアップグレードするように記述することができます。これは、DotNetNukeがローリングアップグレードを実行する方法です。各リリースのバージョン固有の.SQLファイルを維持し、クリック一回の展開ファイルにそれらを含めるだけです。この方法で、欠落しているリビジョンを前方にロールバックして、データベースの最終リビジョンに到達することができます。それが適用されるよう

Check the database version in Revision Table 
    If less than current version 
     Load SQL file list from path 
      Foreach file with revision > current Revision 
       Execute TSQL Scripts 

各TSQLスクリプトは、データベース内のリビジョン番号を更新します:


は、擬似コードでは、それは何かのようになります。これには実装にかなりの時間がかかりますが、ローリングしているときは問題を解決するのに効果的です。

+0

私は完全に分かりません。私は、マージ担当者がDBの変更を推進するという印象を受けました。あなたは他の気分を借りているのですか? –

+0

このように設定した場合、確かにそのようにすることができますが、インストールを実行してからテーブルを埋めるためにレプリケーションを開始し、すべてのオブジェクトを完全に複製しないようにし、sprocsの問題リビジョンからリビジョンへの変更を展開するために、データベースファイルとSQLファイルのインクリメンタルバージョニングを使用して解決してください。必ずしも正しい解決策ではありませんが、どのように問題を解決できるかという考え方です。 –

関連する問題