2017-12-08 19 views
0

SAS의 한 사용자에 대해 암호가 만료 된 경우 2 Teradata 계정간에 전환 할 수 있기를 원합니다. 예 : teradata에 연결하십시오 (user = "& terauser"password = "& terapwd"account = "& teraacct"server = "& tdserver"mode = teradata);Teradata 계정 전환

terauser : 유효한 비밀번호 질문

커플 : 나는 사용자에게 암호를 변경하도록-경고 사전 어떻게

  1. 비밀번호 terauser1을 만료되었습니다. DBC.Users 테이블을 사용합니까?
  2. 로그에서만 상태를 알 수 있기 때문에 계정을 어떻게 swift해야합니까?

    Proc SQL; 
        connect to ....; 
    
        %put NOTE: SQLXRC=%superq(SQLXRC); 
        %put NOTE: SQLXMSG=%superq(SQLXMSG); 
    

    자동으로 테스트하고 연결을 시도하고 계정 동작을 전환 수행하는 매크로를 만들 수있는 작업 계정을 사용하려면 :

답변

0

. 그런 다음 만료 규칙이 무엇인지 알면 SAS 로그에서 사용자에게 메시지를 보낼 수 있습니다. 120 일 후에 암호가 만료되면 검색어와 보고서는 다음과 같이 보일 수 있습니다.

select catx(' ','%put' 
    , case when (days_left < 2) then 'ERROR:' 
      when (days_left < 10) then 'WARNING:' 
      else 'NOTE:' 
    end 
    ,'Your Teradata password expires in',days_left,'days.') 
into :tdpassword_message trimmed 
from connection to teradata 
(select ((PasswordChgDate+ 120) - date) days_left from dbc.usersV) 
; 
*----------------------------------------------------------------------------; 
* Write message to SAS log ; 
*----------------------------------------------------------------------------; 
&tdpassword_message; 
+0

usersV 테이블에 액세스 할 수없는 것 같습니다. 이 정보는 다른 곳에 있습니까? 친절하게 도와주세요. –

+0

대신 'DBC.USERS' 뷰를 사용해보십시오. – Tom

1

PROC SQL은 검사 할 수있는 자동 매크로 변수를 유지합니다. 사용자 계정 정보를 소스 코드 또는 일반 텍스트 파일에 저장하면 보안 정책에주의해야합니다.

예 :

%macro myConnect(); 
    %* To be used in the context of a Proc SQL statement; 

    %* ... assign first account connection parameters to macro variables; 
    %let terauser=...; 
    ... 
    %let tdserver = ...; 

    connect to teradata (user="&terauser" password="&terapwd" account="&teraacct" server="&tdserver" mode=teradata); 

    %if &SQLXRC eq 0 %then %return; 

    %* ... assign second account connection parameters to macro variables; 
    %let terauser=...; 
    ... 
    %let tdserver = ...; 

    connect to teradata (user="&terauser" password="&terapwd" account="&teraacct" server="&tdserver" mode=teradata); 

    %if &SQLXRC eq 0 %then %return; 

    %put ERROR: Could not connect with current connection parameters; 
    %abort cancel; 
%mend; 

Proc SQL

또한 기존 원격 라이브러리 참조를 사용하여 연결할 수 있습니다 : 당신이 암호가 DBC.USERSV를 조회하여 마지막으로 변경 한 때 테라 데이타를 요청할 수 있습니다 연결받을 경우

* create remote library references; 
libname account1 Teradata ... connection parameters ...; 
libname account2 Teradata ... connection parameters ...; 

Proc SQL; 
    connect using account1; * connect using the account1 
+0

나는 Sir 매크로를 사용해 보았습니다. 이제 자격 증명을 파일에 써야한다면 어떻게해야합니까? pwencode를 사용할 때 암호화 된 암호를 파일에 쓸 수 있지만 모든 사람들이 include 문을 호출하고 코드에 사용하기 위해 사용자 이름과 암호를 저장해야합니다. –

+0

사용자가 액세스 할 수있는 네트워크 폴더에 매크로 및 pwencode 파일을 저장하십시오. 관리자 역할을하는 경우, 개인적으로 매크로 소스 코드를 유지 관리하고 미리 컴파일 된 암호화 된 매크로 만 네트워크 폴더에 저장할 수 있습니다 (매크로 옵션 SECURE 및 STORE). 질문이 더있는 경우 새 질문을 작성하고 질문에 답한 응답을 표시하는 것을 잊지 마십시오 (https://stackoverflow.com/tour를 참조하십시오) – Richard

+0

Sir .. SQL 서버용 Windows 인증과 비슷한 기능을 제공합니다. 나는 유닉스 환경에서 SAS를 사용한다. –