将SAS Enterprise Guide解压缩到Unix Server可运行的批处理中?

时间:2014-11-24 09:17:43

标签: linux batch-file sas enterprise

我们在“企业指南”中构建了一个项目,目的是创建易于理解和维护的代码。该项目包含一组流程,应按特定顺序运行。这个项目我们需要在运行SAS Metadata Server的Linux Server机器上运行。 基本思想是将该项目提取为SAS代码,我们可以在Linux中作为批处理作业从命令行运行。

问题1:

  1. 有没有其他方法可以在Linux托管的SAS服务器中安排批处理作业?我已经阅读了关于调度/运行批处理作业的VBS脚本,但为了在Linux服务器上完成,需要安装WINE,在已经运行许多其他重要应用程序的生产机器上,几乎完全没有问题。
  2. 有没有办法指定一个完整的项目导出到SAS代码,前提是我给出了运行流程的特定顺序?我已经尝试了有序列表,它能够让你按顺序运行任务列表(虽然没有办法选择整个流程作为单个任务),但不幸的是,这个有序列表本身以后是不可能的作为SAS代码导出。
  3. 我们目前的解决方案如下: 我们将SAS EG项目的每个流程导出为SAS代码,然后使用%include行创建另一个SAS代码,以便按照我们想要的顺序运行所有提取的代码。这当然是一种可能的解决方案,但绝对不是最优雅的解决方案。

    问题2:

    1. 由于我不知道之后是如何导出代码的,我选择的解决方案是否应该记住任何危险。
    2. 还有其他更优雅的方式吗?

1 个答案:

答案 0 :(得分:1)

你有几个我熟悉的选择,而且我怀疑如果Dom发生了他会更了解。这些答案基于EG 6.1,这是当前版本(9.4附带);在早期版本中,有些事情可能不正确。

首先,如果您从Windows运行Enterprise Guide,则可以在本地安排作业(在任何带有Enterprise Guide的Windows计算机上)。您没有直接安排服务器,您安排Windows启动一个连接到服务器并发挥其魔力的EG进程。这就是我在很大程度上与调度交互的原因(因为我有一个相当“轻松”的调度需求)。

其次,从博文"Four Ways to Schedule SAS Tasks"开始,选项3和4可能对您有所帮助。 SAS Platform Suite的设计部分用于调度,使用SAS Management Console通过操作系统工具进行调度的选项都非常有用。

第三,您可能希望查看SAS Stored Processes,它应该是可调度的。可以将流程流转换为存储流程。


针对您的具体问题:

  • 问题1:导出流程流或项目时,至少在6.1中,您可以选择更改程序的导出顺序。它是手动的,所以它可能并不完美,但它确实为您提供了选择。 (默认情况下,代码在创建顺序中似乎是次优的。)项目导出会将流程流分组在一起,但您无法操作流程的顺序 - 您必须移动每个程序周围,​​这将是乏味的。如果你需要多次运行程序,它当然也会给你较少的灵活性。

  • 问题2:正如Stig Eide在评论中指出的那样,请确保您的系统选项LRECL是> 256(默认值)或您运行一些代码被切断的风险。在9.2+这是可修改的;只需将LRECL=32767放在config.sas文件中即可。