2012-01-02 2 views
1

C#으로 Paradox 데이터베이스에 액세스하는 방법을 찾고 있습니다.C# JET 및 다른 프로그램으로 Paradox 데이터베이스를 사용하는 병렬

문제는 워크 스테이션에서 대상 데이터베이스를 사용하여 모든 준비가 실행중인 프로그램입니다. 실행될 때까지 oleDbConnection.Open()이 예외를 throw합니다.

동일한 컴퓨터에서 .NET에서 프로그램을 실행하고 있지는 않지만 다른 Windows 워크 스테이션에서 공유 폴더를 사용하는 경우 모두 정상적으로 작동합니다. 원본 프로그램에는 읽기/쓰기 권한이 있으며 읽기 전용 액세스 권한이 있습니다. 물론 두 번째 컴퓨터에서 NET DIR은 공유 폴더의 올바른 디렉토리를 가리 킵니다.

동일한 컴퓨터에서 공유 폴더를 사용하고 프로그램 (내 원본)을 모두 실행하고 C#에서 Paradox 데이터베이스로 공유 폴더 연결을 사용하도록 BDE를 구성하면 데이터베이스를 열 수 없습니다.

관리자 계정 권한으로 .NET에서 프로그램을 실행하려고했지만 도움이되지 않습니다.

그래서 다른 프로그램 인 Paradox 데이터베이스 편집기를 사용하고 원본 프로그램이 실행될 때 테이블 중 하나를 편집하려고합니다. 사용자 권한에서 네트워크 폴더에 액세스하는 데 오류가 발생합니다. 그러나 관리자 권한으로 실행하면 데이터베이스를 성공적으로 읽을 수있을뿐만 아니라 Paradox 데이터베이스 편집기 만 사용자 계정 권한으로 만 실행될 수 있습니다.

+0

IIRC 또한 '개인 디렉터리'가 필요합니다. 다른 경로를 사용하는 프로그램을 만들었습니까? –

+0

어디에서이 '개인 디렉터리'를 정의해야하는지 명확하지 않습니다. BDE 관리자 또는 OleDbConnection 연결 문자열 –

답변

0

Paradox 잠금 메커니즘에 문제가있는 것 같습니다. Paradox (귀하의 경우에는 BDE)가 테이블에 액세스 할 때 테이블 디렉토리의 특수 잠금 파일에 항목을 만들고 항목을 만들어 테이블에 한 가지 유형 또는 다른 유형의 잠금을 설정합니다. 이들은 특정 위치의 단일 Paradox.net 파일에 의해 제어됩니다.

현재 응용 프로그램이 BDE를 사용 중이며 다른 것을 사용하고 있다고 말하고있는 것 같습니다. 나는 당신이 그렇게 할 수있을 지 확신하지 못하지만, 가능하다면 같은 잠금 파일과 Paradox.net 파일을 사용해야 할 것입니다. 또한 동일한 역설 버전 논리를 사용해야합니다. 여러 가지 Paradox 버전에서이 잠금 메커니즘이 약간 변경되었습니다. 각 프로그램을 개별적으로 실행하여 파일이 생성하는 파일과 위치를 확인하십시오. 그들은 같은 것들이어야합니다.

개인 디렉터리가 중요하지 않다고 생각합니다. 사실, 2 명의 사용자는 동일한 개인 디렉토리를 가질 수 없습니다.

+0

Henk 코멘트 후에 나는 구글을 파고 재미있는 것을 발견했다. http://sgbd.developpez.com/PDox%20Survival%20Guide.rtf. c : \ application \ i 디렉토리에는 PRIVDIR과 MYDATA가 있습니다. privdir에서 원래 응용 프로그램을 사용하면 MYDATA Paradox.lck, PDOXUSRS.LCK의 PDOXUSRS.NET, PDOXUSRS.LCK가 사용됩니다. MYDATA PDOXUSRS.LCK 및 PARADOX의 privdir PDOXUSRS.NET에서 .NET Framework를 쿼리하면 쿼리가 생성됩니다. LCK. .NET Framework를 쿼리하면 PRIVIR에서 Paradox.lck, PDOXUSRS.LCK가 생성되지 않습니다. 응용 프로그램은 별도로 실행되었습니다. .NET 쿼리에 대해 개인 디렉터리를 지정하는 방법은 무엇입니까? –

+0

개인 디렉터리 http://www.progware.org/Blog/post/Connecting-to-a-PARADOX-DB-with-C-%28Vista-XP%29.aspx를 설정하는 방법은 다음과 같습니다. .NET 파일. 이전 링크에서 따옴표 : 동시성 다중 사용자 환경에서 Paradox 4.0 잠금 프로토콜은 PDOXUSRS.NET 파일을 통한 동시성 (응용 프로그램의 동시 사용)을 유지합니다. Paradox 테이블을 공유하려는 모든 사용자는 같은 경로를 사용하는 동일한 방식으로 동일한 PDOXUSRS.NET 파일에 매핑해야하지만 동일한 드라이브 문자는 필요하지 않습니다. –

+0

예, 모든 응용 프로그램과 모든 사용자가 하나의 Pdoxusrs.net 파일을 사용해야합니다. 이 파일은 다중 사용자 액세스를 제어합니다. 이는 액세스되는 각 테이블에 2 개의 .lck 파일을 작성하여 수행합니다. 그러나 사용자가 테이블을 끝내면 해당 .lck 파일도 삭제되므로 시스템에 .lck 파일이 없어야합니다. 그렇게하면 아무도 그 앱을 실행하지 않고 삭제할 수 있습니다. 그리고 무언가가 끝나지 않았고 제대로 정리가 되었기 때문에 문제가 발생할 것입니다. –

관련 문제