2012-06-28 4 views
5

잠시 동안 OleDbConnection과 (과) 싸워 왔습니다. 기본적으로 다른 응용 프로그램에서 작성된 공유 Access 데이터베이스에 액세스하고 나서 값을 읽는 중입니다 (마지막 쓰기 시간 및 후속 1 초 지연을 통해 플러시되었는지 확인).OleDbConnection 캐시를 비활성화/플러시

불행히도, 이것은 전적으로 신뢰할 수 없습니다.

이 외에도
_connection.Close(); 
_connection.Dispose(); 
_connection = null; 
OleDbConnection.ReleaseObjectPool(); 
GC.Collect(); 

연결을 : 나는 읽기 (그리고 미쳐) 다시 연결하기 전에 다음을 수행하는 각각의 가능한 업데이트 후, 연속적으로 연결 풀링을 해제하고 생각하는 방법을 봤는데

string은 OLE DB Services = -2으로 연결 풀링을 비활성화합니다. 마지막으로, Jet 4.0의 레지스트리에서 PageTimeout을 '10'으로 변경했습니다.

이러한 모든 조치는 불행히도 효과가 없습니다. 이제 내가 생각할 수있는 유일한 것은 this Microsoft KB Article에 언급 된 내용이며 JRO.JetEngine.RefreshCache으로 전화하십시오. 유일한 문제는 인수가 ADODB.Connection이라는 것입니다. 차라리 내 전체 데이터베이스 계층을 다시 작성하지 않고 레거시 COM 개체를 사용하여이 기능을 사용하기 위해 내 소프트웨어에서 레코드를 읽는 위치가 있지만이 방법이 유일한 방법 일 수 있습니다.

제 질문은 현재 ADODB (ADO.NET조차도 사용하지 않음)를 사용하여 다시 작성하는이 작업을 수행하면서 OleDbConnection의 캐싱을 비활성화 할 수 있습니까?

답변

관련 문제