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
実装

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

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

namespace SqlCommand_ExecuteNonQuery
{
    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 は、Microsoft SQL Server データベースに接続するときにパフォーマンスを向上させるために、SqlDataAdapter および SqlCommand と共に使用されます。 サードパーティ製のSQL Server製品およびその他の OLE DB でサポートされているすべてのデータ ソースについては、OleDbConnection を使用します。

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

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

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

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.  
}  

Note

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

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

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

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

注意

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

コンストラクター

名前 説明
SqlConnection()

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

SqlConnection(String, SqlCredential)

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

SqlConnection(String)

接続文字列を含む文字列が指定されたときに、 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 のインスタンスのバージョンを含む文字列を取得します。

SspiContextProvider

SSPI コンテキストをカスタマイズするための SspiContextProvider インスタンスを取得または設定します。 設定されていない場合は、プラットフォームの既定値が使用されます。

State

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

StatisticsEnabled

trueに設定すると、現在の接続の統計収集が有効になります。

WorkstationId

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

メソッド

名前 説明
BeginTransaction()

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

BeginTransaction(IsolationLevel, String)

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

BeginTransaction(IsolationLevel)

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

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 Schema Collections」を参照してください。

GetSchema(String, String[])

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

GetSchema(String)

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

Open()

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

Open(SqlConnectionOverrides)

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

OpenAsync(CancellationToken)

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

OpenAsync(SqlConnectionOverrides, CancellationToken)

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

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()

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

適用対象