从企业指南服务器

时间:2018-01-21 07:44:39

标签: sas

每当我在Enterprise指南中登录远程服务器时,我都会被100个默认的libnames所淹没,我认为这些libnames已被指定为默认配置(我没有使用libname语句单独分配它们)

enter image description here

这使我很难找到我使用我的代码分配的库。如果我右键单击库并单击取消分配它会抛出一个错误(加上它不可行,右键单击并逐个取消分配所有这些错误。)

我猜测默认情况下在某种配置文件中分配了所有这些库,但是我找不到任何解释方法的链接。我确实通过了配置文件,但也许我不理解其中的任何内容。

即使我以某种方式隐藏它们也足够了。

我确实看过这个link,但我无法找出存储libnames的位置。

PS我使用SAS EG 7.13和SAS 9.4

修改:当我尝试直接取消分配libname时,它只是说"发生意外错误"

The SAS System library may not be reassigned

如果我尝试使用@Richard的代码取消分配,那么就说

Warning: Library <Name> is not assigned in this scope

我注意到我创建的所有库都是由引擎V9创建的,其中预定义的库由引擎base创建。

2 个答案:

答案 0 :(得分:2)

您可以尝试使用libname _all_ clear;在会话开始时清除所有libnames。

但是,这不会删除预先指定的库。为此,您需要根据signature更新SAS Management Console中的设置:

signature

确实没有必要删除这些库 - 您可以让管理员设置权限,以便您(通过您的组)只对您需要访问的库具有“读取元数据”权限。 / p>

答案 1 :(得分:1)

此示例代码将清除除列出的所有libref之外的所有libref:

%let _CLEAR_LIBNAMES_STATEMENT=;

proc sql;
  reset noprint;
  select distinct "LIBNAME " || libname
  into :_CLEAR_LIBNAMES_STATEMENT separated by ";"
  from DICTIONARY.LIBNAMES
  where libname not in (
  'LIST OF LIBNAMES TO KEEP or CANT BE CLEARED'
  , 'WORK'
  , 'SASUSER'
  , 'SASHELP'
  , 'MAPS'
  , 'MAPSGFK'
  , 'MAPSSAS'
  )
  ;

&_CLEAR_LIBNAMES_STATEMENT;
%symdel _CLEAR_LIBNAMES_STATEMENT;

服务和连接过程中有许多要点可以定义librefs。您声明“抛出错误”但不说明错误。

对于EG中的SASAPP文件夹,库可能是由服务器autoexec和管理控制台设置设置的。也可以在每个用户的EG首选项中创建Libnames(工具/选项/ SAS程序/连接后提交)

您可以在自己的EG连接首选项中运行libname清除代码,或者作为项目启动代码块运行,或者如果libname一个尺寸适合所有方法,如果影响众多用户,则可以与SAS服务器管理员协作。