在作业失败后中断/打开文件(sas7bdat.lck问题)



你好,

Tl;博士:a) 从.lck文件恢复数据是否可行?b) 如果出现.lck问题,SAS将解决该问题。

我们有在SAS机器上运行的自动化日常工作。偶尔工作会失败。这有时会留下锁定的文件。(<filename>.sas7bdat.lck而不是<filename>.sas7bdat文件)

此问题阻止重新运行程序,因为SAS发现已经有指定的文件名并尝试访问该文件名,但失败了。消息:

Attempt to rename temporary member of <dataset> failed.

目前,我们通过手动删除文件和调整生成号来处理它们。

问题分为两个方面:a)是否有可能从.lck文件中恢复数据?b) 如果.lck问题出现,SAS会解决它。(注意,我们有很多工作,在所有这些工作中输入检查代码都是工作密集型的。)

.sas7bdat.lck文件是SAS在创建数据集时写入的文件。如果数据步骤(或PROC)成功完成,则会删除原始数据集文件,并重命名.sas7bdat.lck文件以删除.lck部分。如果出现任何错误,.lck文件将被删除,并且原始数据集将保留在原位,不进行修改。这就是SAS在出现错误时避免覆盖现有数据集的方法。

因此,您应该能够重命名文件以删除.lck,或者将其重命名为damaged.sas7bdat,然后尝试访问该文件。你可以试试PROC DATASETS REPAIR(https://v8doc.sas.com/sashtml/proc/z0247721.htm)如果您真的需要获取可能存在的任何数据。

显然,最好的解决方案是首先纠正导致你的工作像这样爆炸的任何错误。任何SAS程序都不应该让.lck文件到处乱放,即使它遇到错误——你的作业实际上一定是在破坏SAS环境本身,或者它们可能被另一个进程过早地杀死了。简单地接受这种情况并尝试解决它可能只会为未来积累更多的问题。

最新更新