JMP 스크립트는 DSN 매개변수를 포함합니다. 왜??<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />JMP 스크립트는 JSL 파일 내부에 데이터 연결 매개변수를 포함합니다.그러한 부적절한 프로그래밍 관행에 대한 이유가 있습니까?수백 개의 JSL과 SQL 관리자가 서버 또는 데이터베이스 자격 증명을 변경하기로 결정했다고 상상해 보십시오.DSN을 중개자로 사용하지 않는 이유는 무엇입니까?
Re: JMP 스크립트는 DSN 매개변수를 포함합니다. 왜??나는이 솔루션을 시도하고 결과의 90 %를 얻었습니다 ...
내 데이터베이스에 성공적으로 연결되고 있지만 포함 기능으로 가져온 DSN 정보에 UID 및 PWD 값이 있어도 ODBC 팝업 창에 DSN 이름과 암호를 입력하라는 메시지가 계속 표시됩니다.
왜 이런 일이 발생하는지에 대한 아이디어가 있습니까?
//DSN 자격 증명 가져오기
::DSN 자격 증명 받기 = "드라이버={오라클의 OraClient11g_home1};DSN=myDB;UID=myUID;PWD=myPWD;DBQ=MyDB;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL =10;LOB=T;RST=T;GDE=F;FRL=F;BAM=IfAllSuccessful;MTS=F;MDI=F;CSR=F;FWC=F;PFC=10;TLO=0;" ;
// 아무것도 반환하지 않음
;
내 Jmp 스크립트가 성공적으로 연결되었습니다.
만약에 ( 비었다 (::DSN 자격 증명 가져오기),
포함 ( "C:\_JMP 스크립트\JMP DSN\ DSN 자격 증명 받기 .jsl" );
);
연결 = 데이터베이스 연결 생성 (::DSN 자격 증명 가져오기);
SQL1 = "SELECT * FROM DB.TABLE " ;
아웃파일1 = "내 파일 이름" ;
dt1 = 데이터베이스 열기 (CONNECT, SQL1, OUTFILE1);
하지만 여전히 내 DB 이름과 비밀번호를 묻습니다...
Re: JMP 스크립트는 DSN 매개변수를 포함합니다. 왜??내가 하고 있는 것보다 낫다.공유해 주셔서 감사합니다.저는 비전문가 사용자와 작업하는 "사치"가 있습니다.
Re: JMP 스크립트는 DSN 매개변수를 포함합니다. 왜??이것은 열악한 보안 솔루션입니다.데이터베이스에 대한 사용자 이름과 암호를 얻으려면 다음을 실행하기만 하면 됩니다.
포함 ( "$ADDIN_HOME(com.mydept.myapp)\DSN_CREDENTIALS.jsl 가져오기" ) ;
:: my_dsn_credentials;
::my_dsn_credentials에 저장된 내용은 일반 텍스트로 로그 파일에 표시됩니다.자격 증명을 전역 변수로 한 곳에 모두 저장하는 것은 말할 것도 없고 다음을 쉽게 실행할 수 있습니다.
포함 ( "$ADDIN_HOME(com.mydept.myapp)\DSN_CREDENTIALS.jsl 가져오기" ) ;
전역 표시() ;
이제 Get DSN_CREDENTIALS.jsl에 저장된 모든 데이터베이스 정보가 있습니다. 원본 스크립트에 사용되지 않은 데이터베이스도 포함됩니다. 받았다 .이 두 번째 부분은 모든 "::"를 "__"(이중 밑줄)로 변경하여 쉽게 수정할 수 있으므로 ::my_dsn_credentials는 __my_dsn_credentials가 됩니다.이렇게 하면 전역 변수가 show globals()에 표시되지 않도록 숨깁니다. 기능. 그러나 이것은 여전히 지정된 데이터베이스가 손상된 문제를 해결하지 못합니다. 다음 형식에 따라 수정할 수도 있습니다.
DSN_CREDENTIALS.jsl 가져오기 :
// DSN_CREDENTIALS.jsl 가져오기
__my_dsn_credentials = "드라이버={오라클의 OraClient11g64_home1};Dbq=MY_DATABASE;UID=MYUSERID;PWD=MYPASSWORD;" ;
__DBC = 데이터베이스 연결 생성 (__ my_dsn_credentials ) ;
// 아무것도 반환하지 않음
__my_dsn_credentials = . ;
이렇게 하면 두 가지 문제가 해결됩니다.하나는 __dbc를 다른 스크립트에 전달할 수 있습니다.__dbc를 실행하는 경우; 위 스크립트의 로그에 'Database( "Oracle in OraClient11g64_home1(MY_DATABASE)" )'를 전달합니다.드라이버와 데이터베이스를 표시하는 것은 사용자 이름과 암호를 전달하는 것과 같은 보안 위협이 훨씬 적습니다.둘째, __my_dsn_credentials를 덮어쓰는 것이 중요합니다.이는 변수를 추측하더라도 정보가 여전히 안전하다는 것을 의미합니다.
Re: JMP 스크립트는 DSN 매개변수를 포함합니다. 왜??JMP 10의 기본 설정에 없는 것 같습니다. 480페이지의 JSL 스크립팅 가이드에 있습니다. JSL에서 설정해야 합니다.관련 부분은 다음과 같습니다.
참고: ODBC 데이터베이스에서 데이터를 가져올 때 사용자 ID를 포함할 수 있는 테이블 변수가 추가됩니다.
및 비밀번호 정보. 이를 방지하려면 다음 JSL 전용 기본 설정을 지정하십시오.
선호 ( ODBC 연결 문자열 숨기기 ( 1 )) ;
Re: JMP 스크립트는 DSN 매개변수를 포함합니다. 왜??이 댓글을 게시하기 전에 ODBC 관리에 대한 정보를 찾을 수 없었습니다.제 JMP 10 버전에는 이 옵션이 없습니다.

Re: JMP 스크립트는 DSN 매개변수를 포함합니다. 왜??스마트 솔루션; 공유해 주셔서 감사합니다!
Re: JMP 스크립트는 DSN 매개변수를 포함합니다. 왜??ODBC를 통해 Oracle 데이터베이스를 호출하는 수백 개의 JSL 스크립트가 있습니다.그러나 각 JSL 파일 내부에 별도의 데이터 연결 매개변수를 포함하지 않습니다.대신 INCLUDE 문을 사용하여 DSN 문자열을 정의하는 단일 JSL 파일을 실행합니다.
내 코드는 다음과 같습니다.
라는 JSL 스크립트가 하나 있습니다. DSN_CREDENTIALS.jsl 가져오기 :
// Get DSN_CREDENTIALS.jsl
::my_dsn_credentials = "Driver={Oracle in OraClient11g64_home1};Dbq=MY_DATABASE;UID=MYUSERID;PWD=MYPASSWORD;";
// Return nothing
.;
JSL의 코드 암호화 기능인 btw를 사용하여 스크립트를 암호화합니다.
그런 다음 연결 문자열이 필요할 때마다 다음과 같은 코드를 사용합니다.
// Get database access string
if (is empty(::my_dsn_credentials),
include("$ADDIN_HOME(com.mydept.myapp)\Get DSN_CREDENTIALS.jsl");
);
dbc = create database connection(::my_dsn_credentials);
sql_statement = "SELECT SYSDATE FROM DUAL";
dt = execute sql(dbc, sql_statement);
close database connection(dbc);
Re: JMP 스크립트는 DSN 매개변수를 포함합니다. 왜??대부분의 고객이 이 기능을 유용하게 생각하며 실제로 고객 요청으로 인해 추가되었습니다.Preferences->Tables->ODBC Hide Connection String을 선택하면 쉽게 억제됩니다.이것은 조직에 특정한 기본 설정 파일을 통해 사용자에게 배포될 수 있습니다.