在sas中工作磁盘空间不足的解决方案

时间:2016-04-26 12:59:09

标签: sas

我有超过50个表正在运行。之前,它运作良好。 但最近,有一些错误,如:

  

错误:文件发生了I / O错误   WORK.'SASTMP-000000030'n.UTILITY。错误:文件   WORK.'SASTMP-000000030'n.UTILITY已损坏。 I / O处理没有   完成。注意:在实用程序文件处理期间遇到错误。   如果您可以成功执行SQL语句         为WORK库分配更多空间。错误:没有足够的工作磁盘空间来存储内部排序的结果   相。错误:发生了错误。

有谁知道如何解决此错误?

5 个答案:

答案 0 :(得分:3)

您的磁盘已满。如果这在服务器上运行,请让系统管理员调查此问题。

如果这是您的桌面,请查找并删除不需要的文件以释放空间。

清理旧的SAS工作文件夹

SAS关闭时,旧的SAS Work文件夹通常不会被清除。您可以通过转到为SAS Work定义的路径并删除所有旧文件夹来获取大量磁盘空间。

在SAS中

%put %sysfunc(pathname(work));

将显示当前WORK库的位置。升级是指创建所有SAS Work文件夹的位置。

在我的系统上,返回:

C:\Users\dpazzula\AppData\Local\Temp\SAS Temporary Files\_TD9512_GXM2L12-PAZZULA_

这意味着我应该查看" C:\ Users \ dpazzula \ AppData \ Local \ Temp \ SAS Temporary Files \"找到要删除的旧文件夹。

答案 1 :(得分:0)

您的工作空间已满 您的SAS服务器使用一个专用目录,其中所有SAS会话都存储其临时文件:工作库中的所有文件,以及排序,加入等时使用的临时文件。

解决方案:

  1. 分配更多空间。
  2. 确保只将必要的文件投入工作/清理/关闭旧会话。
  3. 减少流程。

答案 2 :(得分:0)

使用视图替换临时数据集,尤其是在使用大型源数据集的情况下:

data master /view=master ;
  set lib.monthlydata20: ; /* all datasets since Jan 2000 */
run ;

proc sql ;
  create table want as
  select *
  from master
  where ID in(select ID from lookup) ;
quit ;

答案 3 :(得分:0)

听起来你需要更好地了解什么/谁在吃你的工作库。在github上的GPL下有一个免费的工具(仅限unix):

https://github.com/Boemska/worktop

答案 4 :(得分:0)

研究你的代码。

创建数据流图以确定何时创建每个文件,在下游使用它。找出不再需要数据集的时间并删除它。如果您有50个数据集,那么很多数据集可能会被后续步骤“增值”,并且可以免除您的工作空间。一个可爱的技巧是重新使用一些数据集名称 - 以控制不需要的数据集的数量。

经验法则:以您找到的方式离开环境 - 如果WORK中没有文件可以启动,请自行手动清理。除非它是一个存储过程,它启动一个全新的SAS工作,并将在完成工作后自行清理。