我正在使用SAS Enterprise Guide 6.1并且正在使用工具,SAS程序下的“在服务器连接时提交SAS代码”功能来提交我的所有个人凭据,libnames。是的,我知道使用SAS Management Console可能有一种更简单的方法,但现在不能选择。
我需要在每个项目中分配几个Teradata库,但问题是有时我(或更常见的是我团队中的其他人)将更改我的密码而忘记在启动代码中更改它。这会导致几次不正确的尝试并立即锁定我。我想做一些事情:
创建条件libname分配,如果凭据正确,将执行所有libnames。
如果凭据不正确,则不执行libnames(因此我不会将自己锁定)。
由于“连接服务器时提交SAS代码”部分中的SAS代码似乎没有生成日志,我希望自己发送一封附有SAS日志的电子邮件(仅当凭据失败时)
终止服务器连接(如果凭据错误),以避免进一步尝试分配库。
这是我的尝试,我无法附加日志并设置电子邮件声明。
*Define personal credentials;
%let myemail=gollum@middleearth.com;
filename temp email "&myemail";
*Define Teradata credentials;
%let tera_user=Gollum; /*Teradata Username*/
%let tera_pwd=#filthy_hobbitses; /*Teradata Password*/
*Conditionally assign libraries;
%macro libsetup();
libname library1 teradata user=&tera_user password="&tera_pwd" tdpid=terap schema=library1 fastload=yes bulkload=yes fastexport=yes;
%if &syslibrc=0 %then
%do;
libname library2 teradata user=&tera_user password="&tera_pwd" tdpid=terap schema=library2 fastload=yes bulkload=yes fastexport=yes;
libname library3 teradata user=&tera_user password="&tera_pwd" tdpid=terap schema=library3 fastload=yes bulkload=yes fastexport=yes;
*more library statements here;
%end;
%else
%do;
data _null_;
file temp
subject="TERADATA CREDENTIALS ERROR"
attach=("put SAS LOG filename here");
put 'Teradata Login Failed. SAS LOG Attached.';
%abort abend;
%end;
%mend libsetup;
%libsetup;
感谢。
答案 0 :(得分:0)
无法判断您是否正在寻找有关替代方法的建议,或者是否需要有关电子邮件的帮助。
对于电子邮件,下面的内容(未经测试)应该有效:
filename __mymail email
to="gollum@middleearth.com"
from="gollum@middleearth.com"
subject="credential error"
attach="/home/mylog.log"
;
data _null_;
file __mymail;
put "Hi!";
run;
请注意,执行SAS的服务器必须能够访问邮件服务器,并且所需的实际代码可能因邮件协议等而异。
要附加日志,可能需要使用PROC PRINTTO将日志写入文件,然后再次使用PROC PRINTTO释放文件,然后再通过电子邮件发送。
HTH