【问题标题】:Credentials for a sas metadata library-User IDsas 元数据库的凭据 - 用户 ID
【发布时间】:2013-12-12 06:50:54
【问题描述】:

我在这里遇到需要 SAS 元数据库的用户 ID 的情况。我不想列出访问元数据的用户。 所以, Fetch user id from SAS metadata server 不是我查询的解决方案。

请帮忙

【问题讨论】:

  • 那么..您的查询是什么? “图书馆的用户 ID”没有意义。你的意思是哪些用户/组可以访问该图书馆?
  • 不,我的意思是用于访问库的身份验证凭据。甚至服务器名称等服务器详细信息也会有所帮助。我找到了填充库架构详细信息的方法。除此之外,我还想列出服务器名称。
  • 您可以在 SAS Management Console 中找到库的服务器详细信息。右键单击库名称并选择属性。
  • 您真正想要实现的目标是什么?所需的身份验证详细信息将根据您正在配置的库类型和使用的安全模型(例如 IWA..)而有所不同

标签: sas metadata sas-macro sas-metadata


【解决方案1】:

用于获取 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 语句的宏 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 2014-10-23
    • 2021-10-24
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多