内容が古くなってきたので 接続文字列の書き方をまとめてみる(2014 年版) - しばやん雑記 にて Azure にも対応した 2014 年版を公開しました。
毎回、本番環境にアップする前に迷うのが SQL Server の接続文字列だったりします。
レンタルサーバでは基本的に SQL Server 認証が使われているので書き換える必要があるのですが、Initial Catalog とか Data Source とか意味が分からず、毎回検索してしまうので書き方をまとめておきます。
SQL Server Compact 4.0
<connectionStrings> <add name="(接続文字列名)" connectionString="Data Source=(データベースファイル名)" providerName="System.Data.SqlServerCe.4.0" /> </connectionStrings>
SQL Server 2008
単一のファイルにアタッチする
<connectionStrings> <add name="(接続文字列名)" connectionString="Data Source=(SQL Server のインスタンス名);Integrated Security=True;AttachDBFilename=(データベースファイル名);User Instance=true" providerName="System.Data.SqlClient" /> </connectionStrings>
User Instance を True にすると SQL Server Express だと mdf への接続のみ許可されていて、接続ユーザーごとに新しいプロセスを立ち上げられます。開発時には True で問題ないですが、本番ではセキュリティ的な問題で False にしとけと MSDN に書いてました。
Windows 認証で接続する
<connectionStrings> <add name="(接続文字列名)" connectionString="Data Source=(※データソース指定);Initial Catalog=(データベース名);Integrated Security=True;" providerName="System.Data.SqlClient" /> </connectionStrings>
SQL Server 認証で接続する
<connectionStrings> <add name="(接続文字列名)" connectionString="Data Source=(※データソース指定);Initial Catalog=(データベース名);User ID=(ユーザーID);Password=(パスワード)" providerName="System.Data.SqlClient"/> </connectionStrings>
データソースの指定は下記の表を参照してください。ポート番号は省略出来ます。
既定のインスタンス | (コンピュータ名、サーバアドレス),(ポート番号) |
---|---|
名前付きインスタンス | (コンピュータ名、サーバアドレス)\(インスタンス名),(ポート番号) |
例えば、ローカルの SQL Server Express のインスタンス名 SQLEXPRESS に接続する場合には
Data Source=.\SQLEXPRESS;...
と指定すれば OK です。
VS2010 では Web.Debug.config と Web.Release.config を使えるので、Web.Release.config 側に本番用の接続文字列を書いておけば Web 発行の実行時に自動的に変換されるので間違えることが無いです。