내 회사의 ASP.NET
웹 응용 프로그램 중 하나가 SQL Server 2008 R2
데이터베이스에 연결되어 데이터를 읽거나 쓰지 만 코드의 일부에서는 SqlConnection.Close()
과 SqlConnection.Dispose()
이 연결을 사용한 후에 절대로 호출되지 않습니다. MSDN에서 SqlConnection.Close() 또는 SqlConnection.Dispose()가 호출되지 않으면 어떻게됩니까?
SqlConnection이 범위를 벗어나 있다면, 그것은 닫히지 않습니다. 따라서 Close 또는 Dispose를 호출하여 명시 적으로 연결을 닫아야합니다.
나는 sp_who
을 사용하며 웹 응용 프로그램을 통해 일부 데이터베이스 액세스를 수행함에 따라 점점 더 많은 연결이 생성된다는 것을 알게되었습니다. 그러나 몇 분 후 일부 연결이 끊긴 것 같습니다.
SqlConnection.Close()
및 SqlConnection.Dispose()
이 호출되지 않는 경우를 처리하기 위해 .Net
런타임이 있습니까? 성능과 안정성에 영향을 미치는 잠재적 인 문제가 있습니까?
아마도 대안 인'using' 문으로 래핑됩니다. – user3185569
닫기뿐만 아니라 Dispose를 호출 할 수도 있습니다. 이는이 연결이 닫히고 처리됨을 의미합니다. 올바른 패턴은 항상 "using (SqlConnection ....) {...}"을 사용합니다. –
결국 이들은 가비지 컬렉터에 의해 처리되지만 이것이 문제를 무시해야한다는 것을 의미하지는 않습니다. 연결을 열린 채로두면 모든 고스트 연결에 대해 서버가 자체 리소스를 사용하게되며로드가 많은 서버에서 큰 문제가 될 수 있습니다. 모든 연결 개체 주변에서 using 문을 사용하려고 시도하십시오. – Steve