2014-07-17 8 views
0

나는 오라클 XE 11g의이 나는 사용자 이름과 암호"OS 인증"델파이

로를 TSQLConnection를 사용하여 델파이에서 오라클에 연결할 수 있어요 SQLPLUS 에서 OS 인증을 사용하여 Oracle에 연결할 수 있어요 윈도우 7 호스트에서 실행해야

SQLConnection.Params에서 사용자 이름과 암호를 비우고 OSAuthentication 및/또는 OS 인증 (모든 조합) 매개 변수를 True로 설정하고 Connected를 True로 설정하면 다음과 같은 결과가 발생합니다.

ORA-01017 : 사용자 이름/암호가 유효하지 않습니다. 로그온이 거부되었습니다.

누구나 Delphi 및 dbExpress를 사용하여 OS 인증을 사용하여 Oracle에 연결 했습니까?

+0

'TSQLConnection'은 다른 방법이 없다면 호출하는 스레드와 관련된 사용자를 사용하므로 비어있는 사용자 이름/암호로 연결할 때 Win32 가장을 사용하십시오. –

+0

Win32 가장에 익숙하지 않습니다. 사용자가 아니겠습니까? 호출 스레드와 관련된 % userdomain % \ % username %? Windows API 호출을 사용하여 해당 값을 가져 오면 내 Oracle 서버가 OS 인증에 대해 기대하는 것입니다. – kahlersd

+0

[impersonateLoggedOnUser()]]를 사용하여 가장합니다. http://msdn.microsoft.com/en-us/library/windows/desktop/aa378612.aspx) 또는 관련 기능. hread는 스레드가 다른 사용자를 프로그래밍 방식으로 가장하지 않는 한 기본적으로 응용 프로그램의 프로세스를 시작한 사용자입니다. –

답변

0

동일한 호스트에서 실행중인 sqlplus를 통해 내 Windows 7 호스트에서 실행중인 Oracle XE 11g에 연결할 때 예상되는 Oracle 계정은 "OPS $ % userdomain % \ % username %"입니다. Linux VM을 통해 원격으로 연결할 때 "OPS $ % username %"만 예상됩니다. 동일한 Windows 7 호스트에서 Delphi를 실행하면 TSqlConnection이 원격 연결처럼 작동하는 것처럼 보일 수 있으므로 Oracle의 "OPS $ % username %"사용자를 사용하여 % username %로 Windows에 로그인 할 때 OS 인증을 사용할 수있었습니다.