선택한 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에서 풀의 연결 만 해제합니다.
값을 검색 한 후에 실제 연결을 어떻게 닫을 수 있습니까? 이러한 정보를 열어두면 해당 세션에 사용되지 않을 데이터베이스에 대해 수백 개의 연결이 생성됩니다.
풀링 = false가 트릭을 수행하는 것으로 보이며, 각 데이터베이스에 연결하여 값을 검색하고 즉시 닫습니다. ClearAllPools 및 ClearPool 구현을 시도했지만 효과가없는 것 같습니다. 각 데이터베이스에 풀을 열어두고 내부 연결을 해제한다고 가정합니다. – madlan