문제

나는 다음과 같은 연결을 엽니 다.

Using conn as New OdbcConnection(connectionString)
    conn.Open()
    //do stuff
End Using

연결 풀링이 활성화되면 연결이 물리적으로 닫히지 않고 수영장에 해제되어 재사용됩니다. 비활성화 된 경우 물리적으로 폐쇄됩니다.

아는 방법이 있습니까? 프로그래밍 방식으로 만약에 연결 풀링이 활성화되어 있습니까? 그리고 현재 수영장에서 열린 중고 및 미사용 연결의 수는?

편집하다: 프로그램 내 에서이 정보를 가져와야합니다. 프로그램이 배포 될 모든 단일 PC에서 수동으로 확인할 수 없습니다.

도움이 되었습니까?

해결책

이 레지스트리 키를 읽을 수있을 것 같습니다.

HKEYLOCALMACHINE] Software ODBC ODBCINST.ini SQL Server CPTIMEOUT

(또는 OS 및 사용자 계정에 따라 일부 변형). 값이 0 인 경우 연결 풀링이 비활성화됩니다. 0 이상의 값이면 활성화됩니다.

보다:

http://msdn.microsoft.com/en-us/library/ms810829.aspx

열린 연결 수를 얻는 것이 확실하지 않습니다. 궁금한 점 : 왜 그 숫자를 알아야합니까?

다른 팁

MSDN AS 이것에 대한 심층적 인 지침

데이터 소스 관리자의 연결 풀링 구성

한조각

또는 실행 프롬프트에서 ODBC 데이터 소스 관리자를 시작할 수 있습니다. 작업 표시 줄에서 시작을 클릭하고 실행을 클릭 한 다음 ODBCAD32를 입력하십시오.

연결 풀링을 관리하기위한 탭은 ODBC 데이터 소스 관리자 대화 상자에서 ODBC 3.5 이상의 나중에 있습니다. 레지스트리에서 연결 풀링 구성

ODBC 코어 구성 요소의 버전 3.5 이전 버전의 경우 CPPTIMEOUT 값을 제어하기 위해 레지스트리를 직접 수정해야합니다.

풀링은 항상 데이터 서버 소프트웨어에 의해 처리됩니다. 요점은 .NET에서는 그것에 대해 걱정할 필요가 없다는 것입니다 (예 : SQL Server로 작업 할 때 항상 SQLConnection을 사용해야하는 이유입니다. 일부는 연결 풀링을 가능하게하는 것입니다).

업데이트

Vista에서는 시작 메뉴에 "ODBC"를 입력하면 앱을 찾을 수 있습니다.

OP의 설명에 따라 업데이트

각 컴퓨터에서 연결 풀링이 활성화되어 있는지 결정하는 측면에서 MSDN 지침 레지스트리 값을 확인하면 최선을 다할 것이라고 생각합니다 ( 이 기사 레지스트리 액세스에 대한 포인터).

TBH는 클라이언트 컴퓨터가 정말로 엉망이 아니라면, 나는 심지어 귀찮게하지 않을 것입니다. afaik 그것은 기본적으로 활성화되고 클라이언트 시스템에서 연결을 열면 큰 문제가되지 않았습니다. 그것은 실제로 큰 문제가됩니다 많이 열리고 있습니다.

각 DB의 열린 연결 수를 결정하려면이 SQL을 시도해보십시오. 인터넷의 문서에서 얻었습니다.

select  db_name(dbid) , count(*) 'connections count'
  from master..sysprocesses
 where spid > 50 and spid  @@spid
 group by  db_name(dbid)
 order by count(*) desc

SPIDS <= 50은 SQLSERVER에서 사용합니다. 따라서 위의 SQL은 프로그램에서 사용한 연결을 알려줍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top