首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条件Libname赋值和错误日志

条件Libname赋值和错误日志
EN

Stack Overflow用户
提问于 2015-01-03 15:56:59
回答 1查看 552关注 0票数 0

我正在使用SAS企业指南6.1,并正在利用工具下的“当服务器连接时提交SAS代码”功能,SAS程序来提交我的所有个人凭证,libname。是的,我知道使用SAS管理控制台可能有一种更简单的方法,但这现在不是一个选项。

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

  1. 创建一个条件libname赋值,如果凭据正确,该赋值将执行所有libname。
  2. 如果凭据不正确,则不执行libname(这样我就不会将自己锁在门外)。
  3. 由于“服务器连接时提交SAS代码”部分中的SAS代码似乎不会生成日志,所以我希望给自己发送一封带有SAS日志的电子邮件(只有在凭据失败的情况下)。
  4. 关闭服务器连接(如果凭据错误),以避免进一步尝试分配库。

这是我的尝试,我有困难的附加日志和设置电子邮件声明。

代码语言:javascript
复制
*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;

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-03 18:10:02

不知道你是在寻找其他方法的建议,还是在电子邮件方面寻求帮助。

对于电子邮件,如下(未经测试)的内容应该有效:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27756655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档