MsSQL などのデータベース サーバーを使用するアプリケーションを開発する場合、インストール先のすべての PC にアプリケーションと共にサーバーをインストールするのは賢明ではありません。たとえば、顧客が 10 台のコンピューターを備えたローカル ネットワークを持っている場合、あなたはどうしますか? それらの 10 個すべてに SQL サーバーをインストールしますか? その場合、データを共有する必要がある場合はどうすればよいでしょうか?
したがって、(他のアプリケーションでの一般的な慣行に基づく) 最善のアプローチは、ユーザーが SQL サーバーを必要な場所にインストールできるようにし、アプリケーションを構成してサーバーの場所を指すようにすることです。そのパスをたどると、アプリケーションの構成は、セットアップ アプリケーションまたはアプリケーション自体で行うことができます。
開発段階についてですが、同じアプリケーションを 2 台の異なるコンピューターで開発する必要があったという同様の状況がありました。私がしたことは、名前付きインスタンス「sqlexpress」を使用して両方にSQLサーバーをインストールし、次に使用したアプリケーションで
Data.SqlClient.SqlConnectionStringBuilder
接続文字列を作成するクラス。私はこのようなことをしました:
Public Function getDevConnectionString() As String
Dim csb As New Data.SqlClient.SqlConnectionStringBuilder(My.Settings.dbConnectionString) '<-My original cs in app settings
csb.DataSource = My.Computer.Name & "\sqlexpress"
Return csb.ConnectionString
End Function
接続文字列が必要なときはいつでも、getDevConnectionString() を呼び出すだけで、コンピューター名と SQL Server インスタンス名に基づいて接続文字列が返されます。例えば:
Dim cs As String
#If DEBUG Then
cs = getDevConnectionString()
#Else
cs = getReleaseConnectionString()
#End If
getReleaseConnectionString() は、顧客が構成した接続文字列を返す関数です。
これが正しい方向を示してくれることを願っています...