2016-09-12 6 views
0

ODBC 연결을 설정하고 있지만 설정이 올바른지 확인하는 데 도움이 필요합니다. 또한 PHP 코드를 작성하여 DB에 대한 연결이 작동하는지 확인하는 데 도움이되기를 바랍니다.MS Access 용 ODBC 설정

Windows Server 2008 R2 시스템에서는 C : \ Windows \ SysWOW64를 탐색하고 odbcad32를 실행합니다. (여기서 내가 혼란스러워지기 시작했다. 내가 본 대부분의 페이지는 이것에 대한 아주 기본적인 정보를 제공한다.) DB는 MS Access 파일이다. 어떤 탭을 선택합니까? 사용자 DSN ... 시스템 DSN ... 파일 DSN?

일단 올바른 탭을 선택하면 데이터 원본 이름을 입력 할 때 문제가 발생합니까? 예를 들어 파일이 'it.accdb'인데도 데이터 소스 'Employees'에 'Employees.accdb'라는 이름을 넣을 수 있습니까? 아니면 실제 파일 이름과 일치해야합니까?

마지막으로, PHP 코드는 DB에 연결해야합니까? DB는 현재 D : \ Temp \ IT.accdb입니다. 현재 System DSN 탭에 'Employees'라는 데이터 소스 이름으로 구성된 ODBC가 있고 . DB 나는 다음과 같은 코드를 시도했습니다.

<?php 
$dbName = "Employees"; 

if (!file_exists($dbName)) { 
    die("Could not find database file."); 
} 
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb,*.accdb)}; DBQ=$dbName; Uid=; Pwd=;"); 

나는 $ DBNAME 사물의 다양한으로 변경 시도했지만 모두 내가 데이터베이스 파일을 찾지 못하는에서 결과를 시도한를

하는 SOM 수 이걸 도와 주겠니?

+0

PHP 스크립트가 데이터베이스와 동일한 컴퓨터에서 실행되고 있습니까? – ChristianF

+0

라이브 데이터베이스가 원격 가상 서버에 있습니다 (Windows Server 2008 R2). 성공적인 연결을 시도하기 위해 여러 위치로 이동 한 테스트 데이터베이스를 만들었습니다. 가능하다면 현재 위치에 데이터베이스를 남기고 싶습니다. 그러나 라이브 데이터베이스를 원격으로 연결할 수 없다면 라이브 데이터베이스를 로컬 위치로 옮길 것입니다. – egoche

+0

질문을 명확히하기 위해 [편집]하십시오 : 귀하의 PHP 코드가 Access 데이터베이스 파일이있는 동일한 Windows Server 2008 R2 시스템에서 실행되고 있습니까? 그렇지 않다면 다른 Windows 상자에서 실행 중입니까?그렇다면 PHP 코드가 32 비트 프로세스 또는 64 비트 프로세스로 실행됩니까? 데이터베이스 파일은 .accdb 파일 인 것 같습니다. 그 맞습니까? –

답변

0

네트워크를 통해 ODBC 데이터 원본에 액세스하는 두 가지 방법이 있습니다. 데이터베이스가 들어있는 네트워크 드라이브를 마운트하고 시스템 사용자에게 읽기/쓰기 권한을 부여 할 수 있습니다 (권장하지는 않음). 또는 OpenLink과 같은 ODBC 연결을 사용하십시오.

PHP 코드와 동일한 서버로 DB를 이동하려면 this sitepoint guide이 도움이되어야한다고 생각합니다.

후자는 권장되는 가장 쉬운 방법입니다. 이를 위해서는 ODBC 소스를 데이터베이스가 들어있는 서버에서 "System-DSN"으로 설정하고 원하는 이름을 지정해야합니다. "시스템 데이터베이스"를 "없음"으로 선택해야하며 사용자 이름과 암호를 설정하는 것이 좋습니다. 그런 다음이 DSN을 가리키는 ODBC 요청 브로커를 설치하십시오.
클라이언트 쪽에서 ODBC 클라이언트 브리지를 설정하고 원격에서 DSN을 사용하도록 구성합니다. 그 다음에는, PHP이 같은 DSN-문자열을 만드는 것입니다 : 그것 뿐이다

$dsn = "odbc:dsn_name"; 

.

브로커는 설정하는 데 조금 시간이 걸리지 만 가이드를 읽는 한 꽤 간결합니다. OpenLink에는 시험판이있어서, 그것이 당신을 위해 일할 것인지 여부를 알아낼 수 있습니다. 필요한 부품을 파악하기 위해 Software selection wizard도 있습니다.

이 종류의 소프트웨어에 대한 다른 제공 업체도 있지만 OpenLink에서만 경험이 있습니다.

+0

이 프로세스에서이 두 가지 옵션 만 사용할 수 있다면 PHP가 설치된 웹 서버로 데이터베이스를 이동하는 편이 낫습니다. (작은 프로젝트를 위해 돈을 요구하는 것을 피하려고합니다.) 그래서 ... 웹/PHP 서버와 같은 시스템에 데이터베이스가 있다면, 여전히 ODBC 드라이버 설정이 필요할 것이라고 생각합니다. 그렇다면 "System-DSN"으로 설정 될 것인가? – egoche

+0

내 답변에 두 번째 단락을 추가했으며 동일한 서버에서 어떻게 설정해야하는지에 대한 링크가 있습니다. 또한 오픈 소스 및/또는 무료 ODBC 드라이버가 있지만 요구 사항으로 인해 필자는이를 조사하지 않았습니다. 그들이 우리의 유스 케이스를 지원하지 않았기 때문에. – ChristianF

+0

고마워, 크리스천. 이것은이 과정에서 내가 본 수많은 페이지 중 하나입니다 ... 다른 것을 더 자세히 살펴 보겠습니다. 하지만 한 가지 더 질문합니다 ... ODBC 연결을 생성 할 때 데이터 소스 이름을 제공해야합니다. 데이터 소스 이름은 실제 파일과 동일한 이름 일 필요는 없습니다. (예를 들어, 파일 이름은 "One.accdb"일 수 있지만 데이터 소스 이름은 "Two"일 수 있습니다. 제 질문은 PHP 코드에 무엇을 사용하겠습니까? '$ dsn = "odbc : one.accdb"' 또는 '$ dsn = "odbc : two"'? – egoche

관련 문제