-
Notifications
You must be signed in to change notification settings - Fork 0
MS_ADONETConnectionString
- 戻る(ADO.NETデータプロバイダ)
- ADO.NETデータプロバイダの接続文字列
ADO.NET データプロバイダに接続先・認証方式・接続の挙動を指示する
キー=値; 形式の文字列。
移行メモ(元ページの状態): 元ページは「概要」「詳細」の見出しのみで
本文が空のスタブであり、参考リンクだけが記載されていた。
移行に際して、ページの位置付けを保ったまま
単独で読んで要点が分かる程度の補記を追加した。
「必要な属性を別途調査して下さい」という元ページの方針どおり、
網羅ではなく押さえどころに絞っている。
- キーは大文字小文字を区別しない(値は DBMS 依存)。
- 同義のキーが複数ある(例:
Data Source=Server=Addr)。 - 値に
;や=を含む場合は"または'で囲む。 - 各プロバイダに
DbConnectionStringBuilderの派生クラスがあり、
文字列連結ではなくビルダを使うのがエスケープ事故を防ぐ定石。
var b = new SqlConnectionStringBuilder
{
DataSource = "tcp:example.database.windows.net,1433",
InitialCatalog = "SampleDb",
Encrypt = true,
Authentication = SqlAuthenticationMethod.ActiveDirectoryDefault,
};
using var cn = new SqlConnection(b.ConnectionString);| キー | 内容 |
|---|---|
Data Source / Server
|
ホスト名,ポート または ホスト名\インスタンス名
|
Initial Catalog / Database
|
既定のデータベース |
Integrated Security=SSPI |
Windows 統合認証(SQL Server の認証) |
User ID / Password
|
SQL Server 認証 |
Authentication |
Microsoft Entra ID 認証(Active Directory Default 等) |
Encrypt |
通信の暗号化。4.0 以降は既定 true
|
TrustServerCertificate |
サーバ証明書の検証を省略(検証環境向け。本番では使わない) |
Connect Timeout |
接続確立のタイムアウト(既定 15 秒) |
Pooling / Min Pool Size / Max Pool Size
|
接続プール(既定 有効 / 0 / 100) |
Application Name |
監視で「どのアプリの接続か」を識別できるようにする |
MultipleActiveResultSets |
MARS。1 接続で複数の DataReader を開く |
補足(接続プールは接続文字列単位): 接続プールは
接続文字列が完全一致する単位で作られる。
ユーザ毎にUser IDを変える実装(ベース クライアント方式)や、
Application Nameを動的に組み立てる実装ではプールが分断され、
接続確立のコストが毎回発生する。
詳細はリソース アクセス ストラテジを参照。
補足(セキュリティ): 接続文字列は資格情報そのものである。
- ソース管理にパスワードを含む接続文字列を入れない。
Integrated Security=SSPIやマネージド ID を使い、
そもそもパスワードを持たない構成にするのが最善。- やむを得ずパスワードを使う場合は、
環境変数 / Azure Key Vault / ユーザー シークレットから供給する
(.NET Core configを参照)。- 例外メッセージやログに接続文字列を出力しない
(SqlConnectionStringBuilderはPasswordをマスクしない)。
| キー | 内容 |
|---|---|
Data Source |
tnsnames.ora のネット サービス名、または EZ Connect(host:port/service)、あるいは接続記述子そのもの |
User Id / Password
|
ユーザ認証 |
Pooling / Min Pool Size / Max Pool Size
|
接続プール |
Statement Cache Size |
文キャッシュ。既定 0(無効)なので明示すると効くことが多い |
必要な属性を別途調査して下さい。
-
接続文字列の書き方をまとめてみる - しばやん雑記
http://blog.shibayan.jp/entry/20110103/1294060564 -
接続文字列の構文 | Microsoft Learn
https://learn.microsoft.com/ja-jp/dotnet/framework/data/adonet/connection-string-syntax -
データプロバイダ毎の仕様
- SqlConnection.ConnectionString プロパティ (Microsoft.Data.SqlClient)
https://learn.microsoft.com/ja-jp/dotnet/api/microsoft.data.sqlclient.sqlconnection.connectionstring - SqlConnection.ConnectionString プロパティ (System.Data.SqlClient)
https://learn.microsoft.com/ja-jp/dotnet/api/system.data.sqlclient.sqlconnection.connectionstring - Oracle データベースへの接続 - 接続文字列属性
https://docs.oracle.com/cd/E16636_01/doc.111/b56255/featConnecting.htm - .etc
- SqlConnection.ConnectionString プロパティ (Microsoft.Data.SqlClient)
-
The Connection Strings Reference(各種 DBMS の接続文字列例)
https://www.connectionstrings.com/
Tags: 移行, データアクセス, ADO.NET
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。