失败的作业后打破/打开文件(sas7bdat.lck问题)

时间:2017-01-27 08:30:58

标签: automation sas

美好的一天,

铊; DR: 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会解决它。 (请注意,我们有很多工作,并且在所有工作中输入检查代码都是工作密集型的。)

1 个答案:

答案 0 :(得分:3)

.sas7bdat.lck文件是SAS写入的文件,因为它创建了一个数据集。如果数据步骤(或PROC)成功完成,则会删除原始数据集文件,并重命名.sas7bdat.lck文件以删除.lck部分。如果发生任何错误,.lck文件将被删除,原始数据集将保留原样,未经修改。这就是SAS在发生错误时避免覆盖现有数据集的方式。

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

最好的解决方案显然是纠正导致你的工作一开始就像这样炸毁的任何错误。任何SAS程序都不应该留下.lck个文件,即使它遇到错误 - 你的工作实际上必须是崩溃SAS环境本身,或者它们可能被另一个进程过早地杀死了。只是接受这种情况发生并尝试解决它可能只是为将来存储更多问题。