오해 일 수도 있지만 큰 문제가 있습니다. 다음 코드를 고려하십시오.실제로 SQL 연결을 닫을 수 있습니까
static void Main(string[] args)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
int i = 10;
con.Close();
con.Dispose();
}
int y = 10;
}
int y = 10
줄에 중단 점을 배치하십시오.
이제 SQL Server로 이동하여 위의 코드에서 connectionString
과 동일한 연결 인 SQl Connection을 마우스 오른쪽 단추로 클릭하고 "Activity Monitor"를 선택하십시오. 위의 코드를 실행하고 SQL Server 활동 모니터를 확인하십시오. con.Open()
이 실행되면 활동 모니터에 연결이 이루어진 것으로 표시됩니다. 여태까지는 그런대로 잘됐다! 그러나 커서가 int y = 10;
을 나타내는 행에 닿으면 Activity Monitor는 여전히 존재하지 않는 연결을 보여줍니다! 내가 그것을 닫았 기 때문에, 나는 그것을 폐기했고 심지어 사용하는 문장을 통과시켰다.
연결을 어떻게 닫을 수 있는지 아는 사람 있습니까?
이 동작은 정상이며 연결 풀링으로 인한 것입니다. 즉시 연결을 닫으려면 연결 문자열에서 연결 풀링을 비활성화해야하지만 성능이 저하됩니다. –
마이클의 코멘트에 추가하기, this [thread] (http://stackoverflow.com/questions/20203117/using-keyword-doesnt-close-an-open-sql-connection) – Andrei
당신의'Dispose' 콜은 불필요합니다. 'using '이 당신을 위해 캡슐화하고있는 것. – noelicus