SQL ServerおよびSQL Server Expressの接続文字列を一般化できますか?
-
06-07-2019 - |
質問
マシンに展開されているWCFサービスがあります。このWCFサービスは、SQL ServerまたはSQL Server Expressのいずれかに構成できます。
注: SQLデータベースの場所は、WCFサービスが展開されている場所とは別のマシンにすることができます。
次の情報をXMLファイルに入れます:
- ユーザーID
- パスワード
- サーバー名
- MachineName
SQL Server Expressの場合
ServerName プロパティは" SQLEXPRESS"です。内部的にServerNameにMachineNameを追加するため、serverNameは次のようになります。
MachineName \ SQLEXPRESS
接続文字列に渡されます。
SQL Serverの場合
ServerName をSQL Serverに渡すと、例外がスローされます。
最善のアプローチを教えてください!!
解決
例外は何ですか?また、ServerNameとMachineNameの違いがわからない。 ServerNameとInstanceNameを意味したのでしょうか?この方法で文字列を作成する必要があります(擬似コード、使用している言語はわかりません):
DataSource = ServerName
If (InstanceName != "")
DataSource += "\" + InstanceName
他のヒント
同じ接続文字列形式を使用して、SQL Server Expressとフルエディションの両方に接続できます。
デフォルトのインストールでは、適切な文字列を使用していることを確認してください。このようなことが一般的です。
Data Source=MachineName\SQLExpress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
および完全なSQL Serverの場合
Data Source=MachineName;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
最も可能性の高い理由は、MSSQLSERVERのインスタンスが名前付きインスタンスではなくデフォルトインスタンスで実行されているためです(SQL Expressの動作です)。回避策は、環境固有の接続文字列を保持するローカルプロパティファイルを構成することです。次に、構成ファイル自体でファイルを参照するか、ビルドプロセスの一部に構成ファイルに情報を組み込みます。