しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

接続文字列の書き方をまとめてみる

内容が古くなってきたので 接続文字列の書き方をまとめてみる(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 発行の実行時に自動的に変換されるので間違えることが無いです。