使用VBScript的SAS企业指南。通过SAS程序循环会被卡住

使用VBScript的SAS企业指南。通过SAS程序循环会被卡住,vbscript,sas,Vbscript,Sas,我面临一个随机的问题。当使用VBScript和SASEGObjectModel.Application.7.1执行SAS程序时,通过CodeCollection的循环有时会受阻,即使程序执行成功(最终数据库在我们的服务器中正确创建)。脚本simple不会转到CodeCollection的下一个程序(执行脚本的提示仍然处于打开状态…无限期)。发生的SAS程序是随机的,频率也是随机的。我要说这样的话: Dim oSasApp Set oSasApp = CreateObject("SASEGObj

我面临一个随机的问题。当使用VBScript和SASEGObjectModel.Application.7.1执行SAS程序时,通过CodeCollection的循环有时会受阻,即使程序执行成功(最终数据库在我们的服务器中正确创建)。脚本simple不会转到CodeCollection的下一个程序(执行脚本的提示仍然处于打开状态…无限期)。发生的SAS程序是随机的,频率也是随机的。我要说这样的话:

Dim oSasApp

Set oSasApp = CreateObject("SASEGObjectModel.Application.7.1")
oSasApp.SetActiveProfile("some-profile")

Dim oSasProj
Set oSasProj = oSasApp.Open("some-project.egp", "")

Dim oProgramList
Set oProgramList = oSasProj.CodeCollection

Dim programOrder
Set programOrder = ...here I assign the SAS programs order array reading from a .txt...

For Each program in programOrder
       For Each sasProgram in oProgramList
              If sasProgram.Name = program Then
                     sasProgram.Run
                     sasProgram.Log.SaveAs "some-folder/" & sasProgram.Name & ".txt"
              End If
       Next
Next

oSasProj.Close
oSasApp.Quit
问题不在于日志的保存,因为被阻塞程序的日志txt文件也被正确创建

有什么想法吗?我们的SAS服务器可能有问题?我应该声明一些选项吗

SAS指南版本:7.15 窗口:10


所以。。。对于面临同样问题的人。如上所述,如果在提示符下按enter键,脚本将再次流动。所以它在等待我的输入,原因我不知道。我做了两件事来绕开它。不确定是否所有这些都是必要的,或者是否只有一个解决了它,但这里是:

首先,通过VBScript,我关闭了生成列表,并在SAS程序运行后应用了延迟:

按程序顺序为每个程序编写

对于每个SASI程序,操作程序列表
如果sasProgram.Name=program,则
sasProgram.GenSasReport=False
sasProgram.GenHTML=False
sasProgram.GenListing=False
sasProgram.GenPDF=False
sasProgram.GenRTF=False
程序,运行
WScript.Sleep(2000年)
sasProgram.Log.SaveAs“some folder/”&sasProgram.Name&“.txt”
如果结束
下一个
下一个
在我的批处理文件中,我使用“cscript”命令调用VBScript,我将其设置为对VBScript可能询问的每条消息应用“y”:

cd ./script-folder
echo y | cscript script-file-name.vbs

就是这样。

您需要查看SAS服务器日志。可能在大量运行请求涌入期间,某些连接被拒绝或断开,或者连接的运行调度程序挂起在某些未关闭或锁定的资源上。如果您正在运行本地SAS会话,请对可能“挂起”的预期SAS会话使用Windows资源监视器。其他很好的本地故障排除工具是Sysinternals Process Monitor和Process Explorer。您还可以尝试在每个程序运行后添加延迟,以确保不是请求的频率导致问题。这是很好的信息。刚刚发现了一些可以改变一切并使问题更简单的东西:如果在提示符下按enter键,脚本将再次流动。所以它正在等待我的输入。我不明白为什么,因为我没有在.vbs文件中为此编写任何代码。必须是SAS企业指南的内容。我操作的数据库很大,主程序运行大约需要7个小时。我在想如果SAS指南有什么要求的话。可能与数据大小有关?日志?结果?知道会是什么吗?