Я использую SAS Enterprise Guide 6.1 и использую возможность «Отправить код SAS при подключении к серверу» в разделе «Инструменты», «Программы SAS» для отправки всех моих личных учетных данных, имен libnames. Да, я знаю, что есть, вероятно, более простой способ сделать это с помощью SAS Management Console, но сейчас это не вариант.SAS Условные назначения лимен и журнал ошибок
У меня есть несколько библиотек Teradata, которые мне нужно назначить в каждом проекте, но проблема в том, что иногда я (или чаще кто-то другой в моей команде) меняет свой пароль и забывает изменить его в стартовом коде. Это приводит к нескольким неправильным попыткам и немедленно блокирует меня. Я хотел бы сделать несколько вещей:
Создание условного назначения Имя_библиотеки, который будет выполнять все libnames, если учетные данные являются правильными.
Если учетные данные неверны, имена libnames не выполняются (так что я не блокирую себя).
Поскольку код SAS в разделе «Отправить код SAS при подключении к серверу», похоже, не создает журнал, я хочу отправить мне электронное письмо с подключенным журналом SAS (только если сбой учетных данных).
Убейте соединение с сервером (если ошибка учетных данных), чтобы избежать дальнейших попыток назначить библиотеки.
Вот моя попытка, у меня возникли проблемы с подключением журнала и настройкой оператора электронной почты.
*Define personal credentials;
%let [email protected];
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;
Thanks.
Иногда его проще использовать функцию libname вместо операторов libname. – Reeza
Если вы собираетесь вставлять пароли в код, используйте 'PROC PWENCODE' для его шифрования, а затем вставьте в свой код зашифрованное значение (например,'% LET TERA_PWD = {sas002} ax = 5qZhw4 ...; '). –