Sas 切换Teradata帐户

Sas 切换Teradata帐户,sas,teradata,Sas,Teradata,如果SAS中一个用户的密码已过期,我希望能够在2个Teradata帐户之间切换。 e、 g.连接到teradata用户=&terauser密码=&terapwd帐户=&teraacct服务器=&tdserver模式=teradata terauser:密码已过期 terauser1:密码有效 两个问题: 如何预先警告用户更改密码。我是否使用DBC.Users表。 如何切换帐户,因为我只知道日志中的状态。 Proc SQL维护一些可以检查的自动宏变量: Proc SQL; connect to

如果SAS中一个用户的密码已过期,我希望能够在2个Teradata帐户之间切换。 e、 g.连接到teradata用户=&terauser密码=&terapwd帐户=&teraacct服务器=&tdserver模式=teradata

terauser:密码已过期 terauser1:密码有效

两个问题:

如何预先警告用户更改密码。我是否使用DBC.Users表。 如何切换帐户,因为我只知道日志中的状态。
Proc SQL维护一些可以检查的自动宏变量:

Proc SQL;
  connect to ....;

  %put NOTE: SQLXRC=%superq(SQLXRC);
  %put NOTE: SQLXMSG=%superq(SQLXMSG);
如果要自动测试和使用工作帐户,可以创建一个宏来执行try connection和switch account行为。如果将用户帐户信息放在源代码或纯文本文件中,请注意安全策略

例如:

%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 account1

如果您已连接,可以通过查询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;

我试过使用宏,先生。现在,如果我需要将凭据写入一个文件,我该怎么做。当我使用pwencode时,我可以将加密密码写入文件,但我需要存储用户名和密码,以便每个人调用include语句并在其代码中使用。将宏,可能还有pwencode文件,放置在用户有权访问的网络文件夹中。如果您担任管理员角色,则可以私下维护宏源代码,并仅将预编译的加密宏保存到网络文件夹-documenation for macro options SECURE and STORE。如果您有更多的问题,请编写一个新的问题,不要忘记标记回答您问题的答案。先生。我可以为SQL Server的Windows身份验证提供类似的内容吗。我在Unix环境中使用SAS。myConnect策略应该适用于任何dbms名称。尝试一下,如果您有问题,请创建一个引用此问题的新问题。确保显示代码、警告或错误。我似乎无法访问usersV表。其他地方有这方面的信息吗?请提供帮助。请改用DBC.USERS视图。