Учетные данные для библиотеки метаданных sas-ID пользователя
У меня возникла ситуация, когда мне нужен идентификатор пользователя библиотек метаданных SAS. Я не хочу перечислять пользователей, которые имеют доступ к метаданным. Таким образом, выборка идентификатора пользователя с сервера метаданных SAS не является решением для моего запроса.
Пожалуйста помоги
1 ответ
Код SAS для получения учетных данных (из метаданных) для механизма библиотек ODBC может выглядеть следующим образом:
%let libref=MYLIB;
/* get liburi */
data _null_;
length lib_uri $256;
call missing (of _all_);
/* get URI for the particular library */
rc=metadata_getnobj("omsobj:SASLibrary?@Libref ='&libref'",1,lib_uri);
call symputx("liburi",lib_uri,'l');
run;
/* query for credentials */
data _null_;
length connx_uri conprop_uri value datasource up_uri schema $256.;
call missing (of _all_);
/* get source connection ID */
rc=metadata_getnasn("&liburi",'LibraryConnection',1,connx_uri);
/* get connection properties */
i=0;
do until (rc2<0);
i+1;
rc2=metadata_getnasn(connx_uri,'Properties',i,conprop_uri);
rc3=metadata_getattr(conprop_uri,'Name',value);
if value='Connection.ODBC.Property.DATASRC.Name.xmlKey.txt' then do;
rc4=metadata_getattr(conprop_uri,'DefaultValue',datasource);
rc2=-1;
end;
end;
/* get SCHEMA */
rc6=metadata_getnasn("&liburi",'UsingPackages',1,up_uri);
rc7=metadata_getattr(up_uri,'SchemaName',schema);
call symputx('SQL_schema',schema,'l');
call symputx('SQL_dsn',datasource,'l');
run;
libname &libref ODBC DATASRC=&sql_dsn SCHEMA=&sql_schema;
Макрос, который будет генерировать оператор libname для других типов библиотек, доступен здесь.