SAS条件Libname分配和错误日志
我正在使用《SAS企业指南》6.1,并且正在使用“工具、SAS程序”下的“连接服务器时提交SAS代码”功能来提交我的所有个人凭据(libnames)。是的,我知道使用SAS管理控制台可能有一种更简单的方法来实现这一点,但目前还没有选择 我需要在每个项目中分配几个Teradata库,但问题是有时我(或者更常见的是我团队中的其他人)会更改密码,而忘记在启动代码中更改密码。这会导致几次错误的尝试,并立即将我锁定。我想做几件事:SAS条件Libname分配和错误日志,sas,Sas,我正在使用《SAS企业指南》6.1,并且正在使用“工具、SAS程序”下的“连接服务器时提交SAS代码”功能来提交我的所有个人凭据(libnames)。是的,我知道使用SAS管理控制台可能有一种更简单的方法来实现这一点,但目前还没有选择 我需要在每个项目中分配几个Teradata库,但问题是有时我(或者更常见的是我团队中的其他人)会更改密码,而忘记在启动代码中更改密码。这会导致几次错误的尝试,并立即将我锁定。我想做几件事: 创建一个条件libname分配,如果凭据正确,该分配将执行所有libnam
*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;
谢谢。无法判断您是否在寻找其他方法的建议,或者是否在寻求电子邮件方面的帮助 对于电子邮件,类似以下内容(未经测试)应该可以使用:
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有时使用libname函数而不是libname语句更容易。如果要在代码中嵌入密码,请使用
PROC pwcode
对其进行加密,然后在代码中嵌入加密值(例如%LET TERA_PWD={sas002}ax=5qZhw4…
)。