このドキュメントはアーカイブされており、メンテナンスされていません。

SqlConnection.ConnectionString プロパティ

SQL Server データベースを開くために使用する文字列を取得または設定します。

名前空間: System.Data.SqlClient
アセンブリ: System.Data (system.data.dll 内)

public override string ConnectionString { get; set; }
/** @property */
public String get_ConnectionString ()

/** @property */
public void set_ConnectionString (String value)

public override function get ConnectionString () : String

public override function set ConnectionString (value : String)

プロパティ値

ソース データベース名を含む接続文字列、および初期接続を確立するために必要なその他のパラメータ。既定値は空の文字列です。

例外の種類条件

ArgumentException

無効な接続文字列の引数が指定されました。または、必要な接続文字列の引数が指定されませんでした。

ConnectionString は、OLE DB 接続文字列とほぼ同じですが、異なる点もあります。OLE DB や ADO とは異なり、Persist Security Info 値を false (既定値) に設定すると、ユーザーが設定した ConnectionString からセキュリティ情報を除いた接続文字列が返されます。Persist Security Info を true に設定した場合を除き、.NET Framework SQL Server 用データ プロバイダでは、接続文字列のパスワードは永続化されず、返されません。

ConnectionString プロパティを使用して、データベースに接続できます。一般的な接続文字列の例を次に示します。

"Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=Northwind;server=(local)"

実行時に新しい SqlConnectionStringBuilder を使用して、有効な接続文字列を作成します。詳細については、「Building Connection Strings」を参照してください。

ConnectionString プロパティを設定できるのは、接続が閉じているときだけです。接続文字列値の多くには、対応する読み取り専用プロパティがあります。接続文字列を設定すると、エラーが検出された場合を除いて、これらのプロパティが更新されます。エラーが発生した場合は、いずれのプロパティも更新されません。SqlConnection プロパティは、ConnectionString に含まれている設定だけを返します。

ローカル コンピュータに接続するには、サーバーとして (local) を指定します。サーバーは常に指定する必要があります。

閉じた接続に対して ConnectionString をリセットすると、パスワードを含むすべての接続文字列値および関連プロパティがリセットされます。たとえば、Database= AdventureWorks を指定した接続文字列を設定した後で、この文字列を Data Source=myserver;Integrated Security=SSPI にリセットすると、Database プロパティに AdventureWorks は設定されません。

接続文字列は、設定した直後に解析されます。解析中に構文のエラーが検出された場合は、ArgumentException などのランタイム例外が生成されます。その他のエラーは、接続を開くときにだけ検出されます。

接続文字列の基本的な書式は、一連のキーワード/値のペアをセミコロンで区切った形となります。等号記号 (=) は、各キーワードとその値を結合します。セミコロン、単一引用符文字、または二重引用符文字を含む値を指定するには、二重引用符で値を囲む必要があります。セミコロンと二重引用符の両方が値に含まれている場合は、単一引用符を使用して値を囲むことができます。単一引用符は、値の先頭が二重引用符文字の場合にも使用できます。逆に、値の先頭が単一引用符の場合は、二重引用符を使用できます。単一引用符と二重引用符の両方が値に含まれている場合、値を囲むために使用する引用符文字は、値の中ですべて 2 つずつ使用する必要があります。

文字列値の先頭または末尾の空白を含めるには、単一引用符または二重引用符で値を囲む必要があります。整数値、ブール値、列挙値の先頭または末尾の空白は、引用符で囲んでも無視されます。ただし、リテラル キーワード文字列や文字列値内の空白は、予約済みです。.NET Framework Version 1.1 以降をご使用の場合、単一引用符または二重引用符は、引用符が値の先頭または末尾の文字でない限り、接続文字列内で区切り文字を付けずに使用できます (たとえば、Data Source= my'Server または Data Source= my"Server など)。

キーワードまたは値の中で等号記号 (=) を使用する場合は、等号記号を 2 つ記述する必要があります。たとえば、次のような接続文字列がある場合、

"key==word=value"

キーワードは "key=word" で値は "value" です。

キーワード/値のペアで特定のキーワードが接続文字列の中に複数回出現する場合、値セットでは最後のペアが使用されます。

キーワードの大文字と小文字は区別されません。

ConnectionString 内のキーワード値として有効な名前の一覧を次の表に示します。

キーワード

既定値

説明

Application Name

N/A

アプリケーション名。アプリケーション名を指定しなかった場合は、'.NET SQLClient Data Provider'。

Asynch

false

true の場合、非同期操作サポートが有効になります。認識される値は、truefalseyes、および no です。

AttachDBFilename

または

拡張プロパティ

または

Initial File Name

N/A

接続可能なデータベースの絶対パスを含む、プライマリ データベース ファイル名。DataDirectory 代替文字列を組み合わせて相対パスで指定することもできます。DataDirectory を使用した場合、データベース ファイルは、この代替文字列で指定されたディレクトリのサブディレクトリに存在している必要があります。

メモメモ

リモート サーバー、HTTP パス名、および UNC パス名はサポートされません。

データベース名は、キーワード 'database' (またはその別名) と組み合わせて次のように指定する必要があります。

"AttachDbFileName=|DataDirectory|\data\YourDB.mdf;integrated security=true;database=YourDatabase"

Connect Timeout

または

Connection Timeout

15

サーバーへの接続を待機する時間 (秒単位)。この時間が経過した後、接続の試行を終了し、エラーを生成します。

Context Connection

false

SQL Server へのインプロセス接続を作成する場合は true

Current Language

N/A

SQL Server Language レコード名。

Data Source

または

Server

または

Address

または

Addr

または

Network Address

N/A

接続する SQL Server のインスタンスの名前またはネットワーク アドレス。サーバー名に続けてポート番号を指定できます。

server=tcp:servername, portnumber

ローカル インスタンスを指定する場合は、必ず (local) を使用します。プロトコルを強制的に指定するには、次のいずれかのプレフィックスを追加します。

np:(local), tcp:(local), lpc:(local)

Encrypt

false

true の場合、サーバーに証明書がインストールされていれば、SQL Server は、クライアントとサーバーの間で送信されるすべてのデータに SSL 暗号化を使用します。認識される値は、truefalseyes、および no です。

Enlist

false

true に設定すると、SQL Server 接続は、プールに追加されたときに、作成スレッドの現在のトランザクション コンテキストに自動的に加えられます。

Failover Partner

N/A

データベースがミラー構成されている場合は、フェールオーバー パートナーのサーバー名。

.NET Framework Version 1.0 および 1.1 では、Failover Partner キーワードはサポートされません。

Initial Catalog

または

Database

N/A

データベース名。

Integrated Security

または

Trusted_Connection

false

false の場合、ユーザー ID とパスワードは接続文字列で指定します。true の場合は、現在の Windows アカウントの資格情報が認証に使用されます。

使用できる値は、truefalseyesno、および sspi (推奨) です。sspi は、true と等価です。

MultipleActiveResultSets

true

true の場合、アプリケーションから MARS (Multiple Active Result Set) を利用できます。false の場合、アプリケーションはバッチごとにすべての結果セットを処理またはキャンセルしないと、同じ接続で他のバッチを実行できません。

使用可能な値は true および false です。

.NET Framework Version 1.0 および 1.1 では、このキーワードはサポートされません。

Network Library

または

Net

dbmssocn

SQL Server のインスタンスへの接続を確立するために使用するネットワーク ライブラリ。サポートされる値は、dbnmpntw (名前付きパイプ)、dbmsrpcn (マルチプロトコル)、dbmsadsn (AppleTalk)、dbmsgnet (VIA)、dbmslpcn (共有メモリ)、dbmsspxn (IPX/SPX)、および dbmssocn (TCP/IP) です。

接続先のシステムに、対応するネットワーク DLL がインストールされている必要があります。ネットワークを指定せずに、.、(local) など、ローカル サーバーを使用する場合は、共有メモリが使用されます。

Packet Size

8192

SQL Server のインスタンスと通信するために使用するネットワーク パケットのサイズ (バイト単位)。

Password

または

Pwd

N/A

ログオンに使用する SQL Server アカウントのパスワード。推奨されません。高度なセキュリティ レベルを維持するために、代わりに Integrated Security キーワードまたは Trusted_Connection キーワードを使用することをお勧めします。

Persist Security Info

false

false または no に設定すると (推奨)、接続が開いているか、開いている状態になったことがある場合に、パスワードなどの機密性の高い情報が接続文字列の一部として返されません。接続文字列をリセットすると、パスワードを含むすべての接続文字列値がリセットされます。認識される値は、truefalseyes、および no です。

Replication

false

接続を使用してレプリケーションがサポートされる場合は true

TrustServerCertificate

false

true の場合、チャネルを暗号化するために SSL が使用され、信頼関係を検証するための証明書チェーンのウォークがバイパスされます。TrustServerCertificate が true に設定され Encrypt が false に設定されている場合、チャネルは暗号化されません。認識される値は、truefalseyes、および no です。詳細については、SQL Server 2005 Books Online の「暗号化階層」および「Using Encryption Without Validation」を参照してください。

Type System Version

N/A

アプリケーションで想定される型システムを表す文字列値。指定できる値は次のとおりです。

Type System Version=SQL Server 2000;

Type System Version=SQL Server 2005;

Type System Version=Latest;

SQL Server 2000 に設定した場合は、SQL Server 2000 型システムが使用されます。SQL Server 2005 のインスタンスに接続するときに、次の変換が行われます。

XML から NTEXT

UDT から VARBINARY

VARCHAR(MAX)、NVARCHAR(MAX)、VARBINARY(MAX) から TEXT、NEXT、IMAGE

SQL Server 2005 に設定した場合は、SQL Server 2005 型システムが使用されます。ADO.NET の現在のバージョンに対して変換は行われません。

Latest に設定した場合は、このクライアント/サーバー ペアで処理できるバージョンよりも最新のバージョンが使用されます。クライアント コンポーネントとサーバー コンポーネントがアップグレードされると、使用されるバージョンもそれに合わせて自動的に変化します。

User ID

N/A

SQL Server ログイン アカウント。推奨されません。高度なセキュリティ レベルを維持するために、代わりに Integrated Security キーワードまたは Trusted_Connection キーワードを使用することをお勧めします。

User Instance

false

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

Workstation ID

ローカル コンピュータ名

SQL Server に接続するワークステーションの名前。

ConnectionString 内の接続プール値として有効な名前の一覧を次の表に示します。詳細については、「接続プールの使用」を参照してください。

名前

既定値

説明

Connection Lifetime

0

接続がプールに返されるときに、作成時刻と現在の時刻が比較され、この時間 (秒単位) が Connection Lifetime で指定された値を超えていた場合は、接続が破棄されます。この機能は、クラスタ構成の場合に、実行中のサーバーとオンライン状態になったばかりのサーバーとの間で負荷分散を強制的に行うときに役立ちます。

値が 0 の場合は、プールされた接続のタイムアウトには最大値が設定されます。

Connection Reset

true

データベース接続をプールから引き出すときに、その接続をリセットするかどうかを決定します。SQL Server Version 7.0 では、false に設定すると、接続を取得するためのサーバーへのラウンド トリップを省略できますが、データベース コンテキストなどの接続状態がリセットされないことに注意する必要があります。

Connection Resetfalse に設定しない限り、ChangeDatabase メソッドによって接続プーラーに影響が及ぶことはありません。接続がプールから取り出されると、その接続はリセットされ、ログイン時のデータベースに戻ります。新しい接続が作成されたり、再認証が求められたりすることはありません。Connection Resetfalse に設定した場合、別のデータベースに対する接続がプールから取り出される場合があります。

Enlist

true

true に設定すると、接続は、プールに追加されたときに、作成スレッドの現在のトランザクション コンテキストに自動的に加えられます。認識される値は、truefalseyes、および no です。

Load Balance Timeout

0

接続プールに維持されている接続が破棄されるまでの最短時間 (秒)。

Max Pool Size

100

プールで許可される最大接続数。

Min Pool Size

0

プールで許可される最小接続数。

Pooling

true

true に設定すると、SQLConnection オブジェクトは、適切なプールから引き出されます。または、必要に応じて作成され、適切なプールに追加されます。認識される値は、truefalseyes、および no です。

ブール値を必要とするキーワードまたは接続プール値を指定する場合は、true の代わりに yes、false の代わりに no を使用できます。整数値は文字列として表されます。

メモメモ

.NET Framework SQL Server 用データ プロバイダは、独自のプロトコルを使用して SQL Server と通信します。そのため、SQL Server に接続するときに ODBC データ ソース名 (DSN) の使用がサポートされません。これは、ODBC 層が追加されないためです。

注意に関するメモ注意

このリリースでは、ユーザー入力に基づいて接続文字列を構築する場合は、アプリケーションで注意が必要です。たとえば、ダイアログ ボックスからユーザー ID およびパスワード情報を取得し、接続文字列に追加する場合などです。アプリケーションでは、ユーザーが不要な接続文字列パラメータを入力値に埋め込むことができないようにする必要があります。たとえば、ユーザーが、別のデータベースに接続しようとして、パスワードに「validpassword;database=somedb」などと入力できないようにする必要があります。

SqlConnection を作成し、接続を開く前にその ConnectionString プロパティを設定する例を次に示します。

private static void OpenSqlConnection()
{
    string connectionString = GetConnectionString();

    using (SqlConnection connection = new SqlConnection())
    {
        connection.ConnectionString = connectionString;

        connection.Open();

        Console.WriteLine("State: {0}", connection.State);
        Console.WriteLine("ConnectionString: {0}",
            connection.ConnectionString);
    }
}

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

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。

.NET Framework

サポート対象 : 2.0、1.1、1.0

.NET Compact Framework

サポート対象 : 2.0、1.0
表示: