1

我在这里遇到需要 SAS 元数据库的用户 ID 的情况。我不想列出访问元数据的用户。所以, 从 SAS 元数据服务器获取用户 ID不是我查询的解决方案。

请帮忙

4

1 回答 1

0

用于获取 ODBC 库引擎的凭据(从元数据)的 SAS 代码可能如下所示:

%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 语句的宏。

于 2016-10-04T15:44:08.587 回答