我有超过50个表正在运行。之前,它运作良好。 但最近,有一些错误,如:
错误:文件发生了I / O错误 WORK.'SASTMP-000000030'n.UTILITY。错误:文件 WORK.'SASTMP-000000030'n.UTILITY已损坏。 I / O处理没有 完成。注意:在实用程序文件处理期间遇到错误。 如果您可以成功执行SQL语句 为WORK库分配更多空间。错误:没有足够的工作磁盘空间来存储内部排序的结果 相。错误:发生了错误。
有谁知道如何解决此错误?
答案 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会话都存储其临时文件:工作库中的所有文件,以及排序,加入等时使用的临时文件。
解决方案:
答案 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):
答案 4 :(得分:0)
研究你的代码。
创建数据流图以确定何时创建每个文件,在下游使用它。找出不再需要数据集的时间并删除它。如果您有50个数据集,那么很多数据集可能会被后续步骤“增值”,并且可以免除您的工作空间。一个可爱的技巧是重新使用一些数据集名称 - 以控制不需要的数据集的数量。
经验法则:以您找到的方式离开环境 - 如果WORK中没有文件可以启动,请自行手动清理。除非它是一个存储过程,它启动一个全新的SAS工作,并将在完成工作后自行清理。