如果SAS中的一个用户的密码已经过期,我希望能够在2个Teradata之间切换。例如连接到teradata (user="&terauser“password=&terapwd”account="&teraacct“server="&tdserver”mode=teradata);
用户:密码过期terauser1 :密码有效
几个问题:
发布于 2017-12-08 14:55:02
如果您已连接,您可以通过查询DBC.USERSV询问Teradata上一次更改密码的时间。然后,如果知道过期规则是什么,就可以在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;发布于 2017-12-08 13:59:03
Proc维护一些可以检查的自动宏变量:
Proc SQL;
connect to ....;
%put NOTE: SQLXRC=%superq(SQLXRC);
%put NOTE: SQLXMSG=%superq(SQLXMSG);如果您想要自动测试和使用工作帐户,您可以创建一个宏来执行尝试连接和切换帐户行为。如果您将用户帐户信息放入源代码或纯文本文件中,请注意安全策略。
示例:
%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还可以使用现有的远程库引用进行连接:
* create remote library references;
libname account1 Teradata ... connection parameters ...;
libname account2 Teradata ... connection parameters ...;
Proc SQL;
connect using account1; * connect using the account1https://stackoverflow.com/questions/47715098
复制相似问题