计划的 .bat 文件 运行ning SAS 脚本无法分配库但在手动 运行 时有效?
Scheduled .bat file running SAS script fails to assign library but works when manually run?
我有一个计划任务,它应该每天 运行 一个 SAS 脚本。但是,它不成功,并导致 0x2
.
的结果
.bat
文件就是:
"E:\Program Files\SAS\SASFoundation.2\Sas.exe" -sysin "C:\Documents and Settings\username\Desktop\myfolder\myscript.sas"
我已经记录了输出,它表明问题是一个库(许多库中只有一个)没有被成功分配:
2 libname COOLDB ORACLE user=Laureate pw=mypass path=COOLDB schema=ODSMGR;
NOTE: Libref COOLDB was successfully assigned as follows:
Engine: ORACLE
Physical Name: COOLDB
3 %let prj = T:\DNA\New Orleans\username\SAS Export Folder;
4 libname dt "&prj.";
NOTE: Library DT does not exist.
包含第一行的地方只是为了证明它在这一点之前一直有效。
这对我来说很奇怪,因为我 100% 确定被引用的 folder/library 存在并且具有适当的权限。
当我手动运行同样的脚本时没有问题:
3 %let prj = T:\DNA\New Orleans\username\SAS Export Folder;
4 libname dt "&prj.";
NOTE: Libref DT was successfully assigned as follows:
Engine: V9
Physical Name: T:\DNA\New Orleans\username\SAS Export Folder
根据服务器的不同,有些系统不喜欢空格(如 SAS Export Folder
中那样),因此在这些情况下,您需要确保 libname 语句中的路径用引号引起来。
正如 Joe 所指出的,不要在引号上加倍,所以将路径传递为:
%let prj=%str(T:\DNA\New Orleans\username\SAS Export Folder);
libname dt "&prj.";
-或-
%let prj=%str("T:\DNA\New Orleans\username\SAS Export Folder");
libname dt &prj;
我有一个计划任务,它应该每天 运行 一个 SAS 脚本。但是,它不成功,并导致 0x2
.
.bat
文件就是:
"E:\Program Files\SAS\SASFoundation.2\Sas.exe" -sysin "C:\Documents and Settings\username\Desktop\myfolder\myscript.sas"
我已经记录了输出,它表明问题是一个库(许多库中只有一个)没有被成功分配:
2 libname COOLDB ORACLE user=Laureate pw=mypass path=COOLDB schema=ODSMGR;
NOTE: Libref COOLDB was successfully assigned as follows:
Engine: ORACLE
Physical Name: COOLDB
3 %let prj = T:\DNA\New Orleans\username\SAS Export Folder;
4 libname dt "&prj.";
NOTE: Library DT does not exist.
包含第一行的地方只是为了证明它在这一点之前一直有效。
这对我来说很奇怪,因为我 100% 确定被引用的 folder/library 存在并且具有适当的权限。
当我手动运行同样的脚本时没有问题:
3 %let prj = T:\DNA\New Orleans\username\SAS Export Folder;
4 libname dt "&prj.";
NOTE: Libref DT was successfully assigned as follows:
Engine: V9
Physical Name: T:\DNA\New Orleans\username\SAS Export Folder
根据服务器的不同,有些系统不喜欢空格(如 SAS Export Folder
中那样),因此在这些情况下,您需要确保 libname 语句中的路径用引号引起来。
正如 Joe 所指出的,不要在引号上加倍,所以将路径传递为:
%let prj=%str(T:\DNA\New Orleans\username\SAS Export Folder);
libname dt "&prj.";
-或-
%let prj=%str("T:\DNA\New Orleans\username\SAS Export Folder");
libname dt &prj;