更改Citrix机器上的SAS工作目录
我在工作的 Citrix 计算机上运行 SAS EG 7.1。我正在尝试执行非常大的 sql 拉取操作,但磁盘空间不断不足。我们的服务器驱动器有足够的存储空间,因此我认为暂时将工作目录切换到该驱动器上的文件夹可以避免此错误?
错误提示“磁盘空间不足...文件已损坏。I/O 处理未完成。如果为 WORK 库分配更多空间,您也许能够成功执行 sql 语句。”我似乎无法访问配置文件,并且尝试以编程方式更改它,但没有成功。我试图将生成的数据帧保存到已经带有 LIBNAME 语句的服务器文件夹中,但我认为在此过程中在 WORK 中创建的临时文件太多而无法处理。有什么帮助吗?
我已经尝试过:
x 'cd "Q:\folder"';
并且
data _null_;
rc = system( 'cd "Q:\folder"' );
if rc = 0
then putlog 'Command successful';
else putlog 'Command failed';
run;
这些运行良好,但在日志中它仍然说我的工作目录没有更改:
SYMBOLGEN: Macro variable SASWORKLOCATION resolves to "C:\Users\user\AppData\Local\Temp\SEG5432\SAS Temporary
Files\citrixMachineDrive\Prc2/"
I'm running SAS EG 7.1 on a Citrix machine at work. I'm trying to do a very large sql pull and keep running out of disk space. Our server drive has plenty of storage, so I assume switching the working directory to a folder on that drive temporarily will avoid this error?
The error says "insufficient disk space....file is damaged. I/O processing did not complete. You may be able to execute sql statement successfully if you allocate more space to the WORK library." I don't seem to have access to the config file and I've tried to change it programmatically with no luck. I am trying to save the resulting dataframe to a server folder already with a LIBNAME statement, but I think the temporary files created in WORK during the process are too much to handle. Any help?
I've tried both:
x 'cd "Q:\folder"';
and
data _null_;
rc = system( 'cd "Q:\folder"' );
if rc = 0
then putlog 'Command successful';
else putlog 'Command failed';
run;
These run fine, but in the log it still says my working directory is unchanged:
SYMBOLGEN: Macro variable SASWORKLOCATION resolves to "C:\Users\user\AppData\Local\Temp\SEG5432\SAS Temporary
Files\citrixMachineDrive\Prc2/"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当前目录与文件参考等相关,但与您的工作或UTIL目录无关。
工作和util仅在启动时可以设置,并且可以在sas.exe的参数或sasv9.cfg配置文件中设置。如何解决特定问题取决于EG是否连接到SAS服务器,还是仅在本地运行。如果在本地运行,则可以修改启动选项。如果它连接到服务器,则必须与您的SAS管理员交谈。
但是,您不太可能将网络文件夹用作工作文件夹。 SAS期望高速磁盘直接连接到机器上进行工作;如果将其设置为网络驱动器,您的性能将非常差。
另请注意,“ C:”在机器上,SAS服务器正在运行 - 如果您本地运行SAS(在Citrix上),则可能是同一机器,但是如果它是远程SAS服务器,则C:\ is在该服务器上。
The current directory is relevant for file references and such, but it's not related to your Work or Util directories.
WORK and UTIL are only settable at startup, and are either set in the arguments for sas.exe or in the sasv9.cfg configuration file. How you solve your particular problem depends on whether EG is connecting to a SAS server, or if it's just running locally. If it's running locally, you may be able to modify the startup options. If it's connecting to a server, you will have to talk to your SAS administrator.
However, it's highly unlikely you would want to use the network folder as your WORK folder. SAS expects high speed disk connected directly to the machine for WORK; if you set it to a network drive, your performance would be extremely poor.
Also note that "C:" is on the machine the SAS server is running on - it might be the same machine, if you're running SAS locally (on Citrix), but if it's a remote SAS server then the C:\ is on that server.