Учетные данные для библиотеки метаданных 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 для других типов библиотек, доступен здесь.

Другие вопросы по тегам