SAS 批处理作业中的 lst 授权不足
Insufficient authorisation to lst in SAS batch job
今天我遇到了一个问题并解决了它,但我不太清楚为什么会出现这个问题。
我们有一个 SAS 批处理作业:
/path_to_script/sasbatch.sh -log /some_path/Logs/replication_#Y.#m.#d_#H.#M.#s.log -batch -noterminal -logparm "rollover=session" -sysin /another_path/macros/replication.sas
今天作业因错误而失败:
ERROR: Insufficient authorization to access /sas_path/sasconfig/Lev1/SASApp/replication.lst.
我发现错误的原因是 NOPRINT
语句不存在于 PROC SQL
语句之一中。将 NOPRINT
嵌入 PROC SQL
header 后正常工作。
那么 NOPRINT
在 SAS 作业中真正起到什么作用,为什么会导致错误?
错误诊断
您没有在您的 SAS 批处理作业中设置 -print
选项,因此它选择写入默认目录。提交作业的用户没有此目录的写入权限:
/sas_path/sasconfig/Lev1/SASApp
NOPRINT 选项和典型用途
PROC SQL
语句中的 NOPRINT
选项会抑制 SQL 过程的任何输出。您的 SQL 过程中必须有一个正在生成输出的语句,通常类似于:
select col1 into :c1
from table;
它会产生不必要的输出,因为它正在创建一个名为 c1 的宏变量,可以在程序的其他地方使用。
决议
设置 NOPRINT
,或将批处理作业中的 -print
选项设置为可写目录,并根据需要 review/delete 输出文件。
NOPRINT
防止将任何内容写入 lst 文件。第一个文件是输出 window 的批处理等价物。在交互式会话中将写入输出 window 的任何内容(因为 ODS LISTING 处于活动状态)都将写入 lst 文件。我总是 运行 批处理作业 NOPRINT
今天我遇到了一个问题并解决了它,但我不太清楚为什么会出现这个问题。 我们有一个 SAS 批处理作业:
/path_to_script/sasbatch.sh -log /some_path/Logs/replication_#Y.#m.#d_#H.#M.#s.log -batch -noterminal -logparm "rollover=session" -sysin /another_path/macros/replication.sas
今天作业因错误而失败:
ERROR: Insufficient authorization to access /sas_path/sasconfig/Lev1/SASApp/replication.lst.
我发现错误的原因是 NOPRINT
语句不存在于 PROC SQL
语句之一中。将 NOPRINT
嵌入 PROC SQL
header 后正常工作。
那么 NOPRINT
在 SAS 作业中真正起到什么作用,为什么会导致错误?
错误诊断
您没有在您的 SAS 批处理作业中设置 -print
选项,因此它选择写入默认目录。提交作业的用户没有此目录的写入权限:
/sas_path/sasconfig/Lev1/SASApp
NOPRINT 选项和典型用途
PROC SQL
语句中的 NOPRINT
选项会抑制 SQL 过程的任何输出。您的 SQL 过程中必须有一个正在生成输出的语句,通常类似于:
select col1 into :c1
from table;
它会产生不必要的输出,因为它正在创建一个名为 c1 的宏变量,可以在程序的其他地方使用。
决议
设置 NOPRINT
,或将批处理作业中的 -print
选项设置为可写目录,并根据需要 review/delete 输出文件。
NOPRINT
防止将任何内容写入 lst 文件。第一个文件是输出 window 的批处理等价物。在交互式会话中将写入输出 window 的任何内容(因为 ODS LISTING 处于活动状态)都将写入 lst 文件。我总是 运行 批处理作业 NOPRINT