2017-12-08 28 views
0

SASの1人のユーザーのパスワードの有効期限が切れた場合、2つのTeradataアカウントを切り替えることができます。例: teradataに接続します(user = "& terauser" password = "& terapwd" account = "& teraacct" server = "& tdserver" mode = teradata)。Teradataアカウントの切り替え

terauser:質問のパスワード有効

カップル:私はないパスワードを変更するようユーザーに事前に警告する方法

  1. パスワード terauser1期限切れ。私はDBC.Usersテーブルを使用しますか?
  2. ログ内のステータスのみを知るように、どのようにアカウントをスウィングするのですか。あなたは自動的に作業アカウントをテストして使用する場合は、接続を試みると、アカウントの動作を切り替える実行するマクロを作成することができ

    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を照会することにより、最後に変更されたときに、Teradataのを頼むことができます接続して取得した場合

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

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

私はマクロを使ってみました。さて、私はファイルに資格情報を書き出す必要がある場合、どのようにそれを行うのですか? pwencodeを使用すると、暗号化されたパスワードをファイルに書き込むことができますが、誰もがインクルードステートメントを呼び出してそのコードで使用できるように、ユーザー名とパスワードを保存する必要があります。 –

+0

マクロおよび多分pwencodeファイルを、ユーザーがアクセスできるネットワークフォルダに配置します。管理者の役割を果たす場合は、非公開でマクロソースコードを管理し、プリコンパイルされた暗号化されたマクロのみを、マクロオプション 'SECURE'と' STORE'のネットワークフォルダ - ドキュメントに保存することができます。より多くの質問がある場合は、新しい質問を作成し、どの回答があなたの質問に答えたのかを忘れないでください(https://stackoverflow.com/tourを参照してください) – Richard

+0

Sir .. SQLサーバのWindows認証に似ています。私はUnix環境でSASを使用しています。 –

関連する問題