我在这里遇到需要 SAS 元数据库的用户 ID 的情况。我不想列出访问元数据的用户。所以, 从 SAS 元数据服务器获取用户 ID不是我查询的解决方案。
请帮忙
我在这里遇到需要 SAS 元数据库的用户 ID 的情况。我不想列出访问元数据的用户。所以, 从 SAS 元数据服务器获取用户 ID不是我查询的解决方案。
请帮忙
用于获取 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 语句的宏。