Visual Studio 2010のデータベースプロジェクトは、最初に導入されて以来、いくつかの内部プロジェクトまたは単一顧客プロジェクトに使用されており、これまでのところ非常にうまく機能しています。現在、任意の顧客サイトにインストールするためにパッケージ化する必要がある「ボックス化された」製品で初めてそれらを使用しています。
これまで見てきたことはすべて、.dbschema
ファイルとvsdbcmd
ツールおよびその要件をMSIの一部として出荷し、インストールの一部としてそのツールを起動することを示唆しています。
これは本当にこのタスクを達成するための最も簡単な方法ですか?私たちは最初のベータテストのためにこれを行っていますが、これまでのところ、それは優れた長期的な展開戦略というよりは、迅速なハックのようです。特に、ソフトウェアをインストールする前に、SQL ServerCE32ビットとSQLServerCE64ビットの両方をマシンにインストールする必要があります。いずれかのアーキテクチャからアセンブリが欠落していたため、MSI内で必要なものをパッケージ化するすべての試みが失敗しました。
sqlcmd
もう1つ調べたのは、ビルド時にプロジェクトを「デプロイ」したときに生成される出力ファイルを出荷することでしたが、それらには、内部開発サーバーのハードコードされたサーバー名が含まれています(データベース名のようなSQLCMD変数ではありません)。 is)は、サーバーのインストール中に.sqlスクリプトを編集する必要があることを意味します。繰り返しますが、それは機能しますが、一般的には悪い考えのようです。
私たちの最後のアプローチ、そして私が何かより良いものを思い付くことができない場合に私たちが本番環境で行う可能性が高いことは、デプロイメント出力に基づいて手動で作成およびアップグレードスクリプトを作成し、実行するインストーラーにカスタムツールを含めることですユーザーの操作に基づくスクリプト(SqlClient
または類似のもの)ですが、これはデータベースプロジェクトの目的の多くを無効にしているようです。sqlcmd
2つのバージョンのSQLCEをインストールし、インストーラーと一緒にVisual Studioを出荷することなく、VS2010 DBプロジェクトをビルドして、さまざまなサーバーに自動展開するためのパッケージ化する方法は他にありますか?