2010-06-06 3 views
1

선택한 SQL 인스턴스의 데이터베이스 목록으로 listview를 채운 다음 각 데이터베이스에서 값을 검색합니다 (내부 제품 버전이며 열이 항상 존재하지는 않습니다). 기능은 목록보기의 두 번째 열 채우는 아래 :ado.net에서 연결 관리

item.SubItems.Add (DBVersionCheck (서버 이름, database.Name))를

Function DBVersionCheck(ByVal SelectedInstance As String, ByVal SelectedDatabase As String) 
    Dim m_Connection As New SqlConnection("Server=" + SelectedInstance + ";User Id=sa;Password=password;Database=" + SelectedDatabase) 
    Dim db_command As New SqlCommand("select Setting from SystemSettings where [Setting] = 'version'", m_Connection) 
    Try 
     m_Connection.Open() 
     Return db_command.ExecuteScalar().trim 
     m_Connection.Dispose() 
    Catch ex As Exception 
     'MessageBox.Show(ex.Message) 
     Return "NA" 
    Finally 
     m_Connection.Dispose() 
    End Try 
End Function 

이것은 각 데이터베이스에 대한 연결을 만들고 떠나고 제외하고 잘 작동 그것은 열린다. 내 이해는 close() \ dispose()는 SQL에 대한 실제 연결이 아니라 ado에서 풀의 연결 만 해제합니다.

값을 검색 한 후에 실제 연결을 어떻게 닫을 수 있습니까? 이러한 정보를 열어두면 해당 세션에 사용되지 않을 데이터베이스에 대해 수백 개의 연결이 생성됩니다.

답변

1

Pooling=false을 연결 문자열에 추가하십시오. 그렇게 처리해야합니다. 당신이 사용할 수있는

0

두 가지 접근 방법 :

1 일 - ClearAllPools 또는 ClearPool 메서드를 호출합니다. 응용 프로그램과 함께 풀링을 사용할 수 있도록하는 것이 좋지만 완료되면 풀을 지울 수 있습니다.
2 - 연결 문자열을 조정하여 연결을 풀링하지 않습니다. Go here 및 자세한 내용은 "ConnectionString 내에서 연결 풀링 값"을 검색하십시오.

+0

풀링 = false가 트릭을 수행하는 것으로 보이며, 각 데이터베이스에 연결하여 값을 검색하고 즉시 닫습니다. ClearAllPools 및 ClearPool 구현을 시도했지만 효과가없는 것 같습니다. 각 데이터베이스에 풀을 열어두고 내부 연결을 해제한다고 가정합니다. – madlan

관련 문제