しばやん雑記

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

接続文字列の書き方をまとめてみる(2014 年版)

接続文字列の書き方をまとめてみる - しばやん雑記 でまとめた内容が、流石にちょっと古くなってきたので Azure 周りも含めてアップデートを行っておきます。

SQL Server

LocalDB

LocalDB は SQL Server 2012 から追加された、インスタンスが常時起動しないタイプの SQL Server になります。必要な時のみインスタンスが立ち上がるので、開発時には役に立つかと思います。

<connectionStrings>
  <add name="{接続文字列名}"
       connectionString="Data Source=(localdb)\v11.0;Integrated Security=True;AttachDbFileName={データベースファイル名}"
       providerName="System.Data.SqlClient" />
</connectionStrings>

LocalDB の詳しい情報は以下の記事を参考にしてください。

SQL Server Express LocalDB - SQL Server | Microsoft Learn

Express

開発環境でよく使われているのが SQL Server Express だと思うので、その接続文字列を挙げておきます。

<connectionStrings>
  <add name="{接続文字列名}"
       connectionString="Data Source=.\SQLEXPRESS;Initial Catalog={データベース名};Integrated Security=True;"
       providerName="System.Data.SqlClient" />
</connectionStrings>

Data Source には SQL Server のインスタンス名を指定する必要がありますが、Express Edition を使っている場合にはほとんどが SQLEXPRESS になっていると思います。

Compact

<connectionStrings>
  <add name="{接続文字列名}"
       connectionString="Data Source={データベースファイル名}"
       providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

残念ながら SQL Server Compact Edition は 4.0 SP1 のリリースで終了と予告されていたので、これからは LocalDB か SQLite を使う形になるのかなと思います。

SQL Server compact edition is in deprecation mode with no new releases planned near future. Last release SQL CE 4.0SP1 (and earlier releases that are still in the support cycle) will continue to be supported through its lifecycle and Microsoft is committed to fix any major, production blocking issues found in these releases.

Bing

非常に使い勝手の良い DB だったので少し残念ですね。

SQL Database

<connectionStrings>
  <add name="{接続文字列名}"
       connectionString="Server=tcp:{サーバー名}.database.windows.net,1433;Database={データベース名};User ID={ユーザー名}@{サーバー名};Password={パスワード};Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
       providerName="System.Data.SqlClient" />
</connectionStrings>

接続文字列のフォーマットは挙げましたが、実際のところ SQL Database の接続文字列は管理ポータルから簡単に取得可能です。

しかし New Relic のプラグインを使う場合などには、ユーザー名とパスワードを変える必要があるので覚えておいて損はないです。

MySQL (ClearDB)

<connectionStrings>
  <add name="{接続文字列名}"
       connectionString="Data Source={サーバーアドレス};Database={データベース名};User Id={ユーザー名};Password={パスワード};"
       providerName="MySql.Data.MySqlClient" />
</connectionStrings>

最近は Azure Web サイトで ClearDB が使えるようになっているので追加しておきました。基本的な要素としては SQL Database の場合とあまり変わりません。

Azure Storage

Azure ストレージの接続文字列はアカウント名とアクセスキーの他にプロトコルとして SSL の有無を設定できるので、2 種類挙げておきます。

まず SSL 無効の接続文字列になります。

<connectionStrings>
  <add name="{接続文字列名}"
       connectionString="DefaultEndpointsProtocol=http;AccountName={アカウント名};AccountKey={アクセスキー}" />
</connectionStrings>

そして SSL 有効の接続文字列は以下になります。

<connectionStrings>
  <add name="{接続文字列名}"
       connectionString="DefaultEndpointsProtocol=https;AccountName={アカウント名};AccountKey={アクセスキー}" />
</connectionStrings>

DefaultEndpointsProtocol の値が http / https から選択するだけです。そしてアクセスキーは管理ポータルから取得できるので、プライマリでもセカンダリでも好きな方を選択してください。

おまけとして、開発用のストレージエミュレータを使う接続文字列は以下になります。

<connectionStrings>
  <add name="{接続文字列名}"
       connectionString="UseDevelopmentStorage=true;" />
</connectionStrings>

最近はストレージエミュレータを使う機会が少なくなっているかもしれませんが、たまに悩むことがあるので書いておきます。

Service Bus

<connectionStrings>
  <add name="{接続文字列名}"
       connectionString="Endpoint=sb://{名前空間名}.servicebus.windows.net/;SharedSecretIssuer={発行者名};SharedSecretValue={アクセスキー}" />
</connectionStrings>

サービスバスの接続文字列は他とちょっと変わっていますが、SQL Database と同様に管理ポータルから非常に簡単に取得できます。


接続文字列の取得

これまでは接続文字列のフォーマットを紹介してきましたが、実際にコードから使う方法も紹介しておきます。Entity Framework や LightSpeed では接続文字列名を指定するだけで使えるようになりますが、ストレージ周りの場合は以下のようなコードで取得しないといけません。

var connectionString = ConfigurationManager.ConnectionStrings["{接続文字列名}"].ConnectionString;

簡単なコードですが、割と利用頻度は高いと思います。

Azure Web サイトと接続文字列

Azure Web サイトでは管理ポータルから、アプリケーションに設定されている接続文字列をオーバーライドすることが出来るようになっています。

プロバイダとしては SQL Server / SQL Database / MySQL / カスタムの 4 つが用意されていて、必要に応じて切り替える必要はありますが、設定済み項目をオーバーライド出来るのはとても便利な機能だと思います。