2017-12-12 1 views
0

나는 UNCWindows 서비스 및 UNC

private static void InsertData(string sql) 
    { 
     System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(); 

     conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" + 
           @"Data source=\\svr\Users\XXXX\XXXXX\db.accdb"; 


     try 
     { 
      conn.Open(); 
      OleDbCommand cmd = new OleDbCommand(sql, conn); 
      cmd.ExecuteNonQuery(); 

      WriteToFile("Data saved successfuly...!"); 
     } 
     catch (Exception ex) 
     { 
      WriteToFile("Failed due to: " + ex.Message); 
     } 
     finally 
     { 
      conn.Close(); 
     } 
    } 

에 위치하는 MS 액세스를 데이터베이스에 연결하는 내 Windows 서비스를 얻으려고 노력 오전에 MS 액세스 이것은 내가 를 얻을 오류 "마이크로 소프트 액세스 데이터베이스입니다 엔진은 '\ svr \ Users \ XXXX \ XXXXX \ db.accdb'파일을 열거 나 쓸 수 없습니다. 이미 다른 사용자가 독점적으로 열었거나 데이터를보고 쓰는 데 필요한 권한이 필요합니다. "

사용 권한은 도메인 사용자로 설정되고 읽고 쓰고 수정됩니다. 데이터베이스는 누구에게도 열려 있지 않습니다.

콘솔 앱에서 정확한 코드를 시도했지만 정상적으로 작동합니다. 아이디어가 있으십니까?

+0

UNC 경로를 네트워크 드라이브 문자에 매핑하면 작동합니까? db가 위치한 디렉토리에서도 읽기/쓰기 권한이 있습니까? – tukan

+0

서비스에서 드라이브 문자를 사용해 보았는데 "X : \ xxxx.xxxx가 올바른 경로가 아닙니다."경로 이름의 철자가 올바른지, 파일이있는 서버에 연결되어 있는지 확인하십시오 상주합니다. " 드라이브에 대한 사용 권한도 있습니다. – James

답변

1

문제가있을 수있는 곳을 기억했습니다. 64 비트 ODBC 대 32 비트 ODBC의 문제점을 기억합니다!

32 비트 Ms 액세스를 실행하는 경우 경로 C:\Windows\SysWOW64\odbcad32.exe에서 32 비트 ODBC 실행 파일을 사용해야합니다!

ODBC data source

2) :

1) C : \ WINDOWS \ SysWOW64와 odbcad32.exe를 관리자로 시작 \ 버튼을 클릭 추가

당신은 제 1 연결 설정에 있습니다 여기에 연결을 입력하십시오 :

Connection

먼저 편집 ODBC 데이터 원본을 작성의 예 :

An example how to fill the data source

나중에 당신이 새로 데이터 소스를 만들 해결하는 것을 잊지 마십시오.

+0

감사. nerver가 그 사실을 알고 있었을까요? 처음에는 작동하지 않았지만 일단 시스템 데이터베이스 단추를 설정하면 모든 것이 잘되었습니다. – James

+0

너무 빨리 말하면서, 여전히 샘 오류가 나옵니다. – James

+0

응용 프로그램 또는 ODBC 설정에서 오류가 발생 했습니까? 몇 가지 세부 사항을 추가 할 수 있습니까? – tukan