Language

SqlConnectionStringBuilder クラス

定義

SqlConnection クラスで使用される接続文字列の内容を簡単に作成および管理できます。

public ref class SqlConnectionStringBuilder sealed : System::Data::Common::DbConnectionStringBuilder
[System.ComponentModel.TypeConverter(typeof(Microsoft.Data.SqlClient.SqlConnectionStringBuilder+SqlConnectionStringBuilderConverter))]
public sealed class SqlConnectionStringBuilder : System.Data.Common.DbConnectionStringBuilder
public sealed class SqlConnectionStringBuilder : System.Data.Common.DbConnectionStringBuilder
[<System.ComponentModel.TypeConverter(typeof(Microsoft.Data.SqlClient.SqlConnectionStringBuilder+SqlConnectionStringBuilderConverter))>]
type SqlConnectionStringBuilder = class
    inherit DbConnectionStringBuilder
type SqlConnectionStringBuilder = class
    inherit DbConnectionStringBuilder
Public NotInheritable Class SqlConnectionStringBuilder
Inherits DbConnectionStringBuilder
継承
SqlConnectionStringBuilder
属性

例

次のコンソール アプリケーションは、SQL Server データベースの接続文字列をビルドします。 このコードでは、SqlConnectionStringBuilder クラスを使用して接続文字列を作成し、SqlConnectionStringBuilder インスタンスのConnectionString プロパティを接続クラスのコンストラクターに渡します。 この例では、既存の接続文字列も解析し、接続文字列の内容を操作するさまざまな方法を示します。

Note

この例には、接続文字列で SqlConnectionStringBuilder がどのように機能するかを示すパスワードが含まれています。 アプリケーションでは、Windows 認証を使用することをお勧めします。 パスワードを使用する必要がある場合は、ハードコーディングされたパスワードをアプリケーションに含めないでください。

using Microsoft.Data.SqlClient;

class Program
{
    static void Main()
    {
        // Create a new SqlConnectionStringBuilder and
        // initialize it with a few name/value pairs.
        SqlConnectionStringBuilder builder =
            new SqlConnectionStringBuilder(GetConnectionString());

        // The input connection string used the 
        // Server key, but the new connection string uses
        // the well-known Data Source key instead.
        Console.WriteLine(builder.ConnectionString);

        // Pass the SqlConnectionStringBuilder an existing 
        // connection string, and you can retrieve and
        // modify any of the elements.
        builder.ConnectionString = "server=(local);user id=ab;" +
            "password=********;initial catalog=AdventureWorks";

        // Now that the connection string has been parsed,
        // you can work with individual items.
        Console.WriteLine(builder.Password);
        builder.Password = "********";

        // You can refer to connection keys using strings, 
        // as well. When you use this technique (the default
        // Item property in Visual Basic, or the indexer in C#),
        // you can specify any synonym for the connection string key
        // name.
        builder["Server"] = ".";
        builder["Connect Timeout"] = 1000;
        builder["Trusted_Connection"] = true;
        Console.WriteLine(builder.ConnectionString);

        Console.WriteLine("Press Enter to finish.");
        Console.ReadLine();
    }

    private static string GetConnectionString()
    {
        // To avoid storing the connection string in your code,
        // you can retrieve it from a configuration file. 
        return "Server=(local);Integrated Security=SSPI;" +
            "Initial Catalog=AdventureWorks";
    }
}

注釈

接続文字列ビルダーを使用すると、開発者はプログラムで構文的に正しい接続文字列を作成し、クラスのプロパティとメソッドを使用して既存の接続文字列を解析して再構築できます。 接続文字列ビルダーは、SQL Server で許可されている既知のキーと値のペアに対応する厳密に型指定されたプロパティを提供します。 アプリケーションの一部として接続文字列を作成する必要がある開発者は、 SqlConnectionStringBuilder クラスを使用して接続文字列をビルドおよび変更できます。 また、このクラスを使用すると、アプリケーション構成ファイルに格納されている接続文字列を簡単に管理できます。

SqlConnectionStringBuilderは、有効なキーと値のペアのチェックを実行します。 そのため、このクラスを使用して無効な接続文字列を作成することはできません。無効なペアを追加しようとすると、例外がスローされます。 このクラスは、シノニムの固定コレクションを保持し、シノニムから対応する既知のキー名に変換できます。

たとえば、 Item プロパティを使用して値を取得する場合は、必要なキーのシノニムを含む文字列を指定できます。 たとえば、Item プロパティや Remove メソッドなど、キー名を含む文字列を必要とするメンバーを使用する場合は、接続文字列内でこのキーに対して"ネットワーク アドレス"、"addr"、またはその他の許容されるシノニムを指定できます。 許容されるシノニムの完全な一覧については、ConnectionString プロパティを参照してください。

Item プロパティ ハンドルは、悪意のあるエントリを挿入しようとします。 たとえば、既定の Item プロパティ (C# ではインデクサー) を使用する次のコードでは、入れ子になったキーと値のペアが正しくエスケープされます。

Dim builder As New Microsoft.Data.SqlClient.SqlConnectionStringBuilder  
builder("Data Source") = "(local)"  
builder("Integrated Security") = True  
builder("Initial Catalog") = "AdventureWorks;NewValue=Bad"  
Console.WriteLine(builder.ConnectionString)  
Microsoft.Data.SqlClient.SqlConnectionStringBuilder builder =  
new Microsoft.Data.SqlClient.SqlConnectionStringBuilder();  
builder["Data Source"] = "(local)";  
builder["Integrated Security"] = true;  
builder["Initial Catalog"] = "AdventureWorks;NewValue=Bad";  
Console.WriteLine(builder.ConnectionString);  

結果は、無効な値を安全な方法で処理する次の接続文字列です。

Source=(local);Initial Catalog="AdventureWorks;NewValue=Bad";  
Integrated Security=True  

コンストラクター

Name 説明
SqlConnectionStringBuilder()

SqlConnectionStringBuilder クラスの新しいインスタンスを初期化します。

SqlConnectionStringBuilder(String)

SqlConnectionStringBuilder クラスの新しいインスタンスを初期化します。 指定された接続文字列は、インスタンスの内部接続情報のデータを提供します。

プロパティ

Name 説明
ApplicationIntent

SQL Server 可用性グループ内のデータベースに接続するときに、アプリケーションワークロードの種類を宣言します。 このプロパティの値は、ApplicationIntentで設定できます。 Always On 可用性グループに対する SqlClient サポートの詳細については、「SqlClient の高可用性、ディザスター リカバリーのサポート」を参照してください。

ApplicationName

接続文字列に関連付けられているアプリケーションの名前を取得または設定します。

AsynchronousProcessing
古い.

Obsolete. この接続文字列を使用して作成された接続で非同期処理が許可されるかどうかを示すブール値を取得または設定します。

AttachDBFilename

プライマリ データ ファイルの名前を含む文字列を取得または設定します。 これには、アタッチ可能なデータベースの完全なパス名が含まれます。

AttestationProtocol

構成証明プロトコルの値を取得または設定します。

Authentication

Microsoft Entraを使用してリソースをAzure SQLするために Connect に使用される認証方法を取得または設定します。

ColumnEncryptionSetting

接続文字列ビルダーの列暗号化設定を取得または設定します。

CommandTimeout

コマンド実行の試行を終了してエラーを生成するまでの既定の待機時間 (秒)。 既定値は 30 秒です。

ConnectionReset
古い.
古い.

Obsolete. 接続プールから描画されたときに接続がリセットされるかどうかを示すブール値を取得または設定します。

ConnectRetryCount

アイドル状態の接続エラーが発生したことを識別した後に試行された再接続の数。 これは、0 から 255 までの整数である必要があります。 Azure以外のエンドポイントの既定値は 1 です。 Azure SQL エンドポイントの場合、既定値は 2 です。 バージョン 5.x 以降では、Azure SQLサーバーレスエンドポイントまたはオンデマンド エンドポイントの場合、アイドル状態または一時停止中のインスタンスへの接続の成功を向上させるために、既定値は 5 です。 アイドル状態の接続エラー時に再接続を無効にするには、0 に設定します。 許容範囲外の値に設定すると、 ArgumentException がスローされます。

ConnectRetryInterval

アイドル状態の接続エラーが発生したことを特定した後の各再接続試行の間の時間 (秒単位)。 1 ~ 60 の整数を指定する必要があります。 既定値は 10 秒です。

ConnectTimeout

試行を終了してエラーを生成する前に、サーバーへの接続を待機する時間 (秒単位) を取得または設定します。

ContextConnection
古い.

Obsolete. SQL Server へのクライアント/サーバーまたはインプロセス接続を行う必要があるかどうかを示す値を取得または設定します。

CurrentLanguage

データベース サーバーの警告またはエラー メッセージに使用される言語を取得または設定します。

DataSource

接続する SQL Server のインスタンスの名前またはネットワーク アドレスを取得または設定します。

EnclaveAttestationUrl

エンクレーブ ベースの Always Encrypted で使用するエンクレーブ構成証明 URL を取得または設定します。

Encrypt

バージョン 5.0 以降の SqlConnectionEncryptOption 値、またはクライアントとサーバーの間で送信されるすべてのデータに TLS 暗号化が必要かどうかを示す以前のバージョンの Boolean 値を取得または設定します。

Enlist

SQL Server接続プールが作成スレッドの現在のトランザクション コンテキストで接続を自動的に参加させるかどうかを示すブール値を取得または設定します。

FailoverPartner

プライマリ サーバーがダウンしている場合に接続するパートナー サーバーの名前またはアドレスを取得または設定します。

FailoverPartnerSPN

接続のフェールオーバー パートナーのサービス プリンシパル名 (SPN) を取得または設定します。

HostNameInCertificate

接続のサーバー証明書を検証するときに使用するホスト名を取得または設定します。 指定しない場合、 Data Source のサーバー名が証明書の検証に使用されます。 (v5.0 以降でのみ使用可能)

IdleTimeout

接続が破棄されるまでに接続が未使用 (アイドル状態) になる最大時間 (秒単位) を取得または設定します。 既定値は 300 (5 分) です。

InitialCatalog

接続に関連付けられているデータベースの名前を取得または設定します。

IntegratedSecurity

接続でユーザー ID とパスワードを指定する (false場合) か、現在のWindows アカウントの資格情報を認証に使用するか (trueする場合) を示すブール値を取得または設定します。

IPAddressPreference

TCP 接続を確立するときの IP アドレス ファミリの優先設定を取得または設定します。

IsFixedSize

SqlConnectionStringBuilderに固定サイズがあるかどうかを示す値を取得します。

Item[String]

指定したキーに関連付けられている値を取得または設定します。 C# では、このプロパティはインデクサーです。

Keys

ICollection内のキーを含む SqlConnectionStringBuilder を取得します。

LoadBalanceTimeout

接続が破棄されるまでの接続プールでの接続の最小時間 (秒単位) を取得または設定します。

MaxPoolSize

この特定の接続文字列に対して接続プールで許可される接続の最大数を取得または設定します。

MinPoolSize

この特定の接続文字列に対して接続プールで許可される接続の最小数を取得または設定します。

MultipleActiveResultSets

true の場合、アプリケーションは複数のアクティブな結果セット (MARS) を維持できます。 false の場合、アプリケーションは、その接続で他のバッチを実行する前に、1 つのバッチからすべての結果セットを処理または取り消す必要があります。 詳細については、「 複数のアクティブな結果セット (MARS)」を参照してください。

MultiSubnetFailover

アプリケーションが異なるサブネット上の AlwaysOn 可用性グループ (AG) に接続している場合、 MultiSubnetFailover=true 設定すると、(現在) アクティブなサーバーの検出と接続が高速化されます。 Always On 可用性グループに対する SqlClient サポートの詳細については、「SqlClient の高可用性、ディザスター リカバリーのサポート」を参照してください。

NetworkLibrary

SQL Server への接続を確立するために使用するネットワーク ライブラリの名前を含む文字列を取得または設定します。

PacketSize

SQL Server のインスタンスとの通信に使用されるネットワーク パケットのサイズをバイト単位で取得または設定します。

Password

SQL Server アカウントのパスワードを取得または設定します。

PersistSecurityInfo

パスワードやアクセス トークンなどのセキュリティに依存する情報を、このSqlConnectionStringBuilderで作成された接続の接続文字列の一部として返す必要があるかどうかを示すブール値を取得または設定します。 このプロパティは、アプリケーションが既に開いているデータベース接続からパスワードを読み取る必要がある場合にのみ、 true に設定する必要があります。 falseの既定値は、より安全な設定です。このプロパティにtrueを使用すると、誤ってデータベース パスワードをログに記録したりトレースしたりするなどのセキュリティ 上のリスクがアプリケーションに表示されます。

PoolBlockingPeriod

接続プールのブロック期間の動作。

Pooling

接続が要求されるたびに接続をプールするか明示的に開くかを示すブール値を取得または設定します。

Replication

接続を使用してレプリケーションがサポートされているかどうかを示すブール値を取得または設定します。

ServerCertificate

接続のSQL Server TLS/SSL 証明書と照合する証明書ファイルへのパスを取得または設定します。 受け付けられる証明書の形式は PEM、DER、CER です。 指定した場合、SQL Server証明書は、指定されたServerCertificateが完全に一致するかどうかを確認することによって確認されます。 (v5.1 以降でのみ使用可能)

ServerSPN

データ ソースのサービス プリンシパル名 (SPN) を取得または設定します。

TransactionBinding

参加している System.Transactions トランザクションとの接続の関連付けを維持する方法を示す文字列値を取得または設定します。

TransparentNetworkIPResolution
古い.

.NET Framework では、このキーの値が true に設定されている場合、ドライバーは DNS 解決済み IP アドレス間で複数の接続ラウンドを実行し、接続が成功するか、全体的なConnect Timeoutに達するまで、試行ごとのタイムアウトが段階的に大きくなり、シーケンシャル モードの試行では最小 500 ミリ秒が実行されます。

TrustServerCertificate

信頼を検証するために証明書チェーンのウォークをバイパスしながらチャネルを暗号化するかどうかを示す値を取得または設定します。

TypeSystemVersion

アプリケーションで想定される型システムを示す文字列値を取得または設定します。

UserID

SQL Server に接続するときに使用するユーザー ID を取得または設定します。

UserInstance

既定の SQL Server Express インスタンスから、呼び出し元のアカウントで実行されているランタイム開始インスタンスに接続をリダイレクトするかどうかを示す値を取得または設定します。

Values

SqlConnectionStringBuilder内の値を含むICollectionを取得します。

WorkstationID

SQL Server に接続するワークステーションの名前を取得または設定します。

メソッド

Name 説明
Clear()

SqlConnectionStringBuilder インスタンスの内容をクリアします。

ContainsKey(String)

SqlConnectionStringBuilder に特定のキーが含まれているかどうかを判断します。

Remove(String)

指定したキーを持つエントリを SqlConnectionStringBuilder インスタンスから削除します。

ShouldSerialize(String)

指定したキーがこの SqlConnectionStringBuilder インスタンスに存在するかどうかを示します。

TryGetValue(String, Object)

この SqlConnectionStringBuilder から、指定されたキーに対応する値を取得します。

適用対象