SqlConnection クラス

定義

SQL Server データベースへの接続を表します。 このクラスは継承できません。

public ref class SqlConnection sealed : System::Data::Common::DbConnection, ICloneable
public sealed class SqlConnection : System.Data.Common.DbConnection, ICloneable
type SqlConnection = class
    inherit DbConnection
    interface ICloneable
Public NotInheritable Class SqlConnection
Inherits DbConnection
Implements ICloneable
継承
SqlConnection
実装

次の例では、 と を SqlCommand 作成します SqlConnectionSqlConnectionが開き、 の としてConnection設定されますSqlCommand。 次に、 を呼び出します ExecuteNonQuery。 これを実現するために、 ExecuteNonQuery には接続文字列と、Transact-SQL INSERT ステートメントであるクエリ文字列が渡されます。 コードが using ブロックを終了すると、接続は自動的に閉じられます。

using System;
using System.Data;
using Microsoft.Data.SqlClient;

namespace SqlCommandCS
{
    class Program
    {
        static void Main()
        {
            string str = "Data Source=(local);Initial Catalog=Northwind;"
                + "Integrated Security=SSPI";
            string qs = "SELECT OrderID, CustomerID FROM dbo.Orders;";
            CreateCommand(qs, str);
        }
        private static void CreateCommand(string queryString,
            string connectionString)
        {
            using (SqlConnection connection = new SqlConnection(
                       connectionString))
            {
                SqlCommand command = new SqlCommand(queryString, connection);
                command.Connection.Open();
                command.ExecuteNonQuery();
            }
        }
    }
}

注釈

オブジェクトはSqlConnection、SQL Server データ ソースへの一意のセッションを表します。 クライアント/サーバー データベース システムでは、サーバーへのネットワーク接続と同じです。 SqlConnectionは、 および SqlCommand と共SqlDataAdapterに使用され、Microsoft SQL Server データベースに接続するときのパフォーマンスを向上させます。 サードパーティ製のSQL Server製品およびその他の OLE DB でサポートされているデータ ソースの場合は、 を使用OleDbConnectionします。

SqlConnectionインスタンスを作成すると、すべてのプロパティが初期値に設定されます。 これらの値の一覧については、 コンストラクターを SqlConnection 参照してください。

接続文字列内のキーワードの一覧については、「」を参照してくださいConnectionString

SqlConnection スコープ外になった場合、閉じられません。 したがって、 または Disposeを呼び出Closeして、接続を明示的に閉じる必要があります。 CloseDispose は機能的に同等です。 接続プールの値Poolingが または yestrue設定されている場合、基になる接続は接続プールに返されます。 一方、 が または nofalse設定されている場合Pooling、サーバーへの基になる接続は実際には閉じられます。

Note

接続が接続プールからフェッチされたり接続プールに返されたりしたとき、ログイン イベントとログアウト イベントはサーバーで発生しません。これは、接続プールに返されても接続は実際には終了していないためです。 詳しくは、「SQL Server の接続プール (ADO.NET)」をご覧ください。

接続が常に閉じられるようにするには、次の using コード フラグメントに示すように、ブロック内の接続を開きます。 これにより、コードがブロックを終了すると、接続が自動的に閉じられます。

Using connection As New SqlConnection(connectionString)  
    connection.Open()  
    ' Do work here; connection closed on following line.  
End Using  
using (SqlConnection connection = new SqlConnection(connectionString))  
    {  
        connection.Open();  
        // Do work here; connection closed on following line.  
    }  

注意

ハイ パフォーマンス アプリケーションをデプロイするには、接続プールを使用する必要があります。 .NET Framework Data Provider for SQL Serverを使用する場合、一部の設定を変更することはできますが、プロバイダーはこれを自動的に管理するため、接続プールを有効にする必要はありません。 詳しくは、「SQL Server の接続プール (ADO.NET)」をご覧ください。

SqlExceptionが を実行するSqlCommandSqlConnectionメソッドによって生成された場合、重大度レベルが 19 以下の場合、 は開いたままです。 重大度レベルが 20 以上の場合、通常、サーバーは を SqlConnection閉じます。 ただし、ユーザーは接続を再び開き、続行できます。

オブジェクトのインスタンスを作成するアプリケーションでは、宣言型または命令型の SqlConnection セキュリティ要求を設定することで、すべての直接呼び出し元と間接呼び出し元がコードに対する十分なアクセス許可を持つ必要があります。 SqlConnection は、 オブジェクトを使用してセキュリティ要求を行 SqlClientPermission います。 ユーザーは、 オブジェクトを使用 SqlClientPermissionAttribute して、コードに十分なアクセス許可があることを確認できます。 ユーザーと管理者は、 Caspol.exe (コード アクセス セキュリティ ポリシー ツール) を使用して、コンピューター、ユーザー、およびエンタープライズ レベルでセキュリティ ポリシーを変更することもできます。 詳細については、「.NET でのセキュリティ」を参照してください。 セキュリティ要求の使用方法を示す例については、「Code Access Security and ADO.NET」を参照してください。

サーバーからの警告メッセージと情報メッセージの処理の詳細については、「 接続イベント」を参照してください。 SQL Server エンジンのエラーとエラー メッセージの詳細については、「データベース エンジンのイベントとエラー」を参照してください。

注意事項

共有メモリの代わりに TCP を強制できます。 これを行うには、tcp: の前に 接続文字列 のサーバー名を付けるか、localhost を使用します。

コンストラクター

SqlConnection()

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

SqlConnection(String)

接続文字列を示す文字列を指定して、SqlConnection クラスの新しいインスタンスを初期化します。

SqlConnection(String, SqlCredential)

Integrated Security = true と、ユーザー ID とパスワードを含む SqlCredential オブジェクトを使用しない接続文字列を指定して、SqlConnection クラスの新しいインスタンスを初期化します。

プロパティ

AccessToken

接続のアクセス トークンを取得または設定します。

AccessTokenCallback

接続のアクセス トークン コールバックを取得または設定します。

CanCreateBatch

この SqlConnection インスタンスが DbBatch クラスをサポートしているかどうかを示す値を取得します。

ClientConnectionId

試行成功したか失敗したかにかかわらず、最新の接続試行の接続 ID。

ColumnEncryptionKeyCacheTtl

Always Encrypted 機能の列暗号化キーのキャッシュ内の、列暗号化キー エントリの有効期限を取得または設定します。 既定値は 2 時間です。 0 は、キャッシュがまったくないことを意味します。

ColumnEncryptionQueryMetadataCacheEnabled

Always Encrypted が有効であるデータベースに対して実行されるパラメーター化されたクエリについて、クエリ メタデータのキャッシュが有効 (true) か無効 (false) かを示す値を取得または設定します。 既定値は true です。

ColumnEncryptionTrustedMasterKeyPaths

データベース サーバーの信頼されたキー パスの一覧を設定できます。 アプリケーションのクエリを処理中に、一覧に存在しないキー パスをドライバーが受け取ると、クエリは失敗します。 このプロパティは、セキュリティが侵害され、偽のキー パスを提供し、キー ストアの資格情報漏洩につながるおそれがある SQL Server を含めたセキュリティ攻撃に対して、セキュリティ保護をさらに強化します。

CommandTimeout

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

ConnectionString

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

ConnectionTimeout

試行を中断してエラーを生成する前に、接続の確立時に待機する時間を取得します。

Credential

この接続の SqlCredential オブジェクトを取得または設定します。

Database

現在のデータベース、または接続が開いてから使用するデータベースの名前を取得します。

DataSource

接続先となる SQL Server のインスタンスの名前を取得します。

FireInfoMessageEventOnUserErrors

FireInfoMessageEventOnUserErrors プロパティを取得または設定します。

PacketSize

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

RetryLogicProvider

このコマンドにバインドされた SqlRetryLogicBaseProvider オブジェクトを指定する値を取得または設定します。

ServerProcessId

アクティブな接続のサーバー プロセス ID (SPID) を取得します。

ServerVersion

クライアントが接続している SQL Server のインスタンスのバージョンを示す文字列を取得します。

State

接続で実行された最も新しいネットワーク操作時の SqlConnection の状態を示します。

StatisticsEnabled

true に設定された場合、現在の接続について統計情報の収集が有効になります。

WorkstationId

データベース クライアントを識別する文字列を取得します。

メソッド

BeginTransaction()

データベース トランザクションを開始します。

BeginTransaction(IsolationLevel)

分離レベルを指定して、データベース トランザクションを開始します。

BeginTransaction(IsolationLevel, String)

分離レベルとトランザクション名を指定して、データベース トランザクションを開始します。

BeginTransaction(String)

トランザクション名を指定して、データベース トランザクションを開始します。

ChangeDatabase(String)

開いている SqlConnection の現在のデータベースを変更します。

ChangePassword(String, SqlCredential, SecureString)

SqlCredential オブジェクトで指定されたユーザーの SQL Server のパスワードを変更します。

ChangePassword(String, String)

接続文字列で指定されているユーザーの SQL Server のパスワードを、指定された新しいパスワードに変更します。

ClearAllPools()

接続プールを空にします。

ClearPool(SqlConnection)

指定した接続に関連付けられている接続プールを空にします。

Close()

データベースへの接続を閉じます。 このメソッドは、開いている接続を閉じるための最も好ましいメソッドです。

CreateCommand()

SqlConnection に関連付けられている SqlCommand オブジェクトを作成し、返します。

EnlistDistributedTransaction(ITransaction)

分散トランザクションとして指定したトランザクションに参加します。

EnlistTransaction(Transaction)

分散トランザクションとして指定したトランザクションに参加します。

GetSchema()

この SqlConnection のデータ ソースのスキーマ情報を返します。 スキームの詳細については、「SQL Server スキーマ コレクション」を参照してください。

GetSchema(String)

スキーマ名として指定した文字列を使用して、この SqlConnection のデータ ソースのスキーマ情報を返します。

GetSchema(String, String[])

スキーマ名に指定した文字列と制限値に指定した文字列配列を使用して、この SqlConnection のデータ ソースのスキーマ情報を返します。

Open()

ConnectionString で指定したプロパティ設定を使用して、データベース接続を開きます。

Open(SqlConnectionOverrides)

ConnectionString で指定したプロパティ設定を使用して、データベース接続を開きます。

OpenAsync(CancellationToken)

ConnectionString で指定したプロパティ設定を使用してデータベース接続を開く Open() の非同期バージョン。 キャンセル トークンを使用すると、接続タイムアウトが経過する前に操作を破棄することを要求できます。 例外は、返されたタスクによって伝達されます。 接続が成功せずに接続タイムアウトの時間が経過した場合、返されるタスクは例外での失敗としてマークされます。 実装は、プール済みの接続でもプールされていない接続でも、呼び出し元のスレッドをブロックすることなくタスクを返します。

RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

列暗号化キー ストア プロバイダーを登録します。 この関数は、アプリで 1 回だけ呼び出す必要があります。 これにより、ディクショナリの簡易コピーが行われ、設定後にアプリでカスタム プロバイダー リストを変更できなくなります。

Windows Certificate Store、CNG Store、CSP に使用できる組み込みの列マスター キー ストア プロバイダーは、事前登録されています。

RegisterColumnEncryptionKeyStoreProvidersOnConnection(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

暗号化キー ストア プロバイダーをインスタンスに SqlConnection 登録します。 この関数が呼び出された場合、静的 RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) メソッドを使用して登録されたプロバイダーはすべて無視されます。 この関数は複数回呼び出すことができます。 これにより、ディクショナリの簡易コピーが行われ、設定後にアプリでカスタム プロバイダー リストを変更できなくなります。

ResetStatistics()

統計情報の収集が有効にされている場合、すべての値はゼロにリセットされます。

RetrieveInternalInfo()

メソッドが呼び出された時点での内部プロパティの名前と値のペア のコレクションを返します。

RetrieveStatistics()

メソッドが呼び出された時点の統計情報の、名前/値ペアから成るコレクションを返します。

イベント

InfoMessage

SQL Server が警告メッセージまたは情報メッセージを返したときに発生します。

明示的なインターフェイスの実装

ICloneable.Clone()

現在のインスタンスのコピーである新しいオブジェクトを作成します。

適用対象