接続の確立
適用対象: .NET Framework .NET .NET Standard
Microsoft SQL Server に接続するには、Microsoft SqlClient Data Provider for SQL Server の SqlConnection オブジェクトを使用します。 安全な接続文字列の格納および取得については、「接続情報の保護」を参照してください。
接続を閉じる
接続がプールに返されるようにするために、接続を使い終えたら必ず接続を終了することをお勧めします。 Visual Basic または C# の Using
ブロックは、コードがこのブロックを終了したときに接続を破棄します。これは、未処理の例外の場合でも実行されます。 詳しくは、「using ステートメント」および「Using ステートメント」をご覧ください。
接続オブジェクトの Close
または Dispose
メソッドを使用することもできます。 明示的に終了されていない接続は、プールに追加したり返したりすることができないことがあります。 たとえば、スコープ外に出ても、明示的に終了されていない接続は、最大プール サイズに達した時点でその接続がまだ有効である場合にだけ接続プールに返されます。
Note
クラスの Finalize
メソッド内で、Connection、DataReader、またはその他のマネージド オブジェクトの Close
または Dispose
を呼び出さないでください。 終了処理では、クラスに直接所有されているアンマネージ リソースだけを解放してください。 クラスがアンマネージ リソースを所有していない場合は、クラス定義に Finalize
メソッドを含めないでください。 詳しくは、「ガベージ コレクション」をご覧ください。
Note
接続が接続プールからフェッチされたり接続プールに返されたりしたとき、ログイン イベントとログアウト イベントはサーバーで発生しません。これは、接続プールに返されても接続は実際には終了していないためです。 詳しくは、「SQL Server の接続プール (ADO.NET)」をご覧ください。
SQL Server への接続
有効な文字列フォーマットの名前および値については、ConnectionString オブジェクトの SqlConnection プロパティを参照してください。 また、SqlConnectionStringBuilder クラスを使用すると、構文的に正しい接続文字列を実行時に作成できます。 詳細については、「接続文字列ビルダー」をご覧ください。
SQL Server のデータベースへの接続を開いて確立する方法を次のサンプル コードに示します。
using Microsoft.Data.SqlClient;
class Program1
{
static void Main()
{
string s = GetConnectionString();
OpenSqlConnection(s);
Console.ReadLine();
}
private static void OpenSqlConnection(string connectionString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
Console.WriteLine("ServerVersion: {0}", connection.ServerVersion);
Console.WriteLine("State: {0}", connection.State);
}
}
static private string GetConnectionString()
{
// To avoid storing the connection string in your code,
// you can retrieve it from a configuration file, using the
// System.Configuration.ConfigurationSettings.AppSettings property
return "Data Source=(local);Initial Catalog=AdventureWorks;"
+ "Integrated Security=SSPI;";
}
}
統合セキュリティと ASP.NET
SQL Server 統合セキュリティ (セキュリティ接続とも呼ばれます) を使用すると、SQL Server に接続するときに保護が提供されます。これは、接続文字列でユーザー ID とパスワードが公開されず、接続を認証するための推奨される方法であるためです。 統合セキュリティでは、実行中のプロセスの現在のセキュリティ ID またはトークンを使用します。 デスクトップ アプリケーションの場合、この ID は、通常、現在ログオンしているユーザーの ID です。
ASP.NET アプリケーションのセキュリティ ID は、他のオプションのうちのいずれかに設定することもできます。 SQL Server に接続するときに ASP.NET アプリケーションが使用するセキュリティ ID の詳細については、「ASP.NET の偽装」、「ASP.NET の認証」、および「方法: Windows 統合セキュリティを使用して SQL Server にアクセスする」を参照してください。