SqlConnection.Close 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
데이터베이스에 대한 연결을 닫습니다. 열린 연결을 닫기 위해 기본적으로 이 메서드를 사용합니다.
public:
override void Close();
public override void Close ();
override this.Close : unit -> unit
Public Overrides Sub Close ()
예외
연결을 여는 동안 발생한 연결 수준 오류입니다.
예제
다음 예제에서는 을 SqlConnection만들고, 열고, 해당 속성 중 일부를 표시합니다. 연결은 블록의 using
끝에서 자동으로 닫힙니다.
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;";
}
}
설명
Close 메서드 보류 중인 트랜잭션을 모두 롤백합니다. 그런 다음 연결 풀에 대 한 연결을 해제 하거나 연결 풀링을 사용 하지 않도록 설정 하는 경우 연결을 닫습니다.
참고
보류 중인 트랜잭션이 Transact-SQL을 사용하여 시작되거나 BeginTransaction 연결 풀링을 사용하도록 설정된 경우 연결이 다시 설정되면 자동으로 롤백됩니다. 연결 풀링이 꺼져 있으면 가 호출된 후 SqlConnection.Close
트랜잭션이 롤백됩니다. 를 통해 System.Transactions 시작된 트랜잭션은 인프라를 System.Transactions
통해 제어되며 의 영향을 SqlConnection.Close
받지 않습니다.
애플리케이션에서 호출할 수 Close 번 이상. 예외가 생성되지 않습니다.
가 SqlConnection 범위를 벗어나면 닫혀 있지 않습니다. 따라서 또는 Dispose
를 호출 Close
하여 연결을 명시적으로 닫아야 합니다. Close
및 Dispose
는 기능적으로 동일합니다. 연결 풀링 값 Pooling
이 또는 yes
로 true
설정된 경우 기본 연결이 연결 풀로 다시 반환됩니다. 반면, 가 또는 no
로 false
설정된 경우 Pooling
서버에 대한 기본 연결이 닫힙니다.
참고
연결이 연결 풀에서 반환될 경우에는 실제로 해제된 것이 아니므로 연결이 연결 풀에서 반입되거나 연결 풀로 반환되는 경우 서버에서 로그인 및 로그아웃 이벤트가 발생하지 않습니다. 자세한 내용은 SQL Server 연결 풀링(ADO.NET)을 참조하세요.
주의
클래스의 메서드에서 Connection, DataReader 또는 기타 관리되는 개체에서 Finalize
또는 Dispose
를 호출 Close
하지 마세요. 종료자에서 클래스가 직접 소유하는 관리되지 않는 리소스만 해제해야 합니다. 클래스에 관리되지 않는 리소스가 없는 경우 클래스 정의에 Finalize
메서드를 포함하지 마세요. 자세한 내용은 가비지 수집을 참조하세요.