2012-02-15 1 views
1

Iseries ODBC 드라이버를 사용할 때 '프로그램 이름'호출을 정의하는 방법이 있습니까? Iseries Access ODBC 드라이버를 사용하여 AS400에 대해 명령을 실행하면 as400의 호출 스택에있는 호출 프로그램이 프로그램 이름을 공백으로 표시합니다. 우리가 누가 호출자인지 알 필요가있는 방아쇠를 가지고 있기 때문에 하나를 정의하고 싶습니다.Iseries ODBC를 사용할 때 호출 프로그램을 정의하는 방법은 무엇입니까?

답변

3

ODBC 연결은 QZDASOINIT 작업을 통해 프 록시됩니다. 나는 방아쇠를 당긴 특정한 연결 (또는 프로그램)을 확인하는 방법이 있다고 생각하지 않는다.

+2

제임스 답에 추가하려면 서버/클라이언트 인터페이스가있을 때마다 상대방에 대한 지식없이 각 측면이 작동한다는 점을 신중히 고려해야합니다. Windows에서 실행되는 Java 프로그램을 상상해보십시오. com.mycompany.orderEntry.inventory.GetQuantity; 일 수 있습니다. ODBC/JDBC를 사용하여 i 용 DB2에 연결합니다. IBM i는 스택을 호출하여 업데이트를 시작한 Java 프로그램의 정확한 이름을 어떻게 알 수 있습니까? ODBC 드라이버는 초기화 프로그램의 이름을 서버에 전달하지 않습니다. –

+0

추가 생각. 연결 설정 방법에 따라 각 응용 프로그램마다 다른 일반 사용자를 사용하면 'WRKACTJOB'에서 옵션 2를 사용하여 로그인 한 사용자가 무엇인지 확인할 수 있습니다. –

2

JamesA가 지적했듯이 모든 ODBC 요청은 QZDASOINIT 작업을 거치므로 호출 스택을 변경하여 호출자를 결정할 수 없습니다.

이 문제점을 해결하기 위해 DB2 for i에는 ODBC 드라이버가 자동으로 설정하는 클라이언트 특수 레지스터 (원하는 경우 무시할 수 있음)가 포함되어 있으므로 트리거를 사용할 수 있습니다. 자세한 내용은 다음을 참조하십시오. http://ibmsystemsmag.blogs.com/i_can/2009/10/i-can-use-client-special-registers.html

0

i 6.1 이후로만 노출되었을 수 있습니다. 사용 예를 들어, 내가 탐색이 문 실행 '실행 SQL 스크립트를 ...'

select CURRENT CLIENT_APPLNAME, CURRENT CLIENT_PROGRAMID, CURRENT CLIENT_WRKSTNNAME from sysibm.sysdummy1 

지원은 JDBC, OLE DB, CLI, 또는 .NET 데이터 공급자를 사용하여 응용 프로그램 개발자가 사용할 수 있습니다. 특수 저장 프로 시저를 호출하여 설정할 수도 있습니다. 예를 들어 IBMDASQL를 사용

, 연결 문자열을 포함 할 수 있습니다 :

conn.Open "Provider=IBMDASQL; Data Source=MyAS400;" & _ 
"Client User ID=MYWINUSRID; Client WorkStation Name=MYWINPC; " & _ 
"Client Program ID=somepc.exe; Application Name=Sample for Audit" 

SQL 참조는 새로운 "특수 레지스터"를 설명합니다.