SAS条件库名称分配和错误日志

时间:2015-01-03 15:57:00

标签: sas

我正在使用SAS Enterprise Guide 6.1并且正在使用工具,SAS程序下的“在服务器连接时提交SAS代码”功能来提交我的所有个人凭据,libnames。是的,我知道使用SAS Management Console可能有一种更简单的方法,但现在不能选择。

我需要在每个项目中分配几个Teradata库,但问题是有时我(或更常见的是我团队中的其他人)将更改我的密码而忘记在启动代码中更改它。这会导致几次不正确的尝试并立即锁定我。我想做一些事情:

  1. 创建条件libname分配,如果凭据正确,将执行所有libnames。

  2. 如果凭据不正确,则不执行libnames(因此我不会将自己锁定)。

  3. 由于“连接服务器时提交SAS代码”部分中的SAS代码似乎没有生成日志,我希望自己发送一封附有SAS日志的电子邮件(仅当凭据失败时)

  4. 终止服务器连接(如果凭据错误),以避免进一步尝试分配库。

  5. 这是我的尝试,我无法附加日志并设置电子邮件声明。

    *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;
    

    感谢。

1 个答案:

答案 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