SAS有一个存储过程服务器,用于运行存储过程和一个运行SAS代码的工作区服务器。但是存储过程只不过是SAS代码语句的组合,为什么工作区服务器不能运行SAS代码?
我试图理解为什么SAS开发人员为存储过程提出了单独服务器的概念。
答案 0 :(得分:2)
存储的进程服务器在运行之间重用SAS进程。它是一个无状态服务器,用于运行小型预编程序并返回结果。服务器维护一个进程池并将请求分配给该池。这样可以最大限度地减少运行作业的时间,因为没有启动/关闭进程开销。
工作区服务器是为1个用户启动的SAS进程。每个用户连接都在服务器上获得一个新的SAS进程。此服务器旨在运行更多交互式进程,其中用户运行某些内容,查看输出,然后运行其他内容。代码不必预先编写并存储在服务器上。在这种情况下,启动时间不是限制因素。
此外,工作区服务器可以提供对服务器的附加访问。程序员可以使用此服务器访问SAS数据集(通过.NET中的ADO或Java中的JDBC)以及服务器上的文件。
因此有2个用例,这些服务器可以解决这些问题。
答案 1 :(得分:2)
从开发人员的角度来看,两个最大的区别是:
&sysuserid
)下运行,默认情况下为sassrv。这将影响操作系统级别的权限(例如数据库访问)。工作区会话始终在客户端帐户(登录用户)凭据下运行。 _webout
fileref将结果传回客户端的选项只能通过存储的进程服务器获得。 存储过程和工作区服务器都可以configured来提供池化会话(保持活动的会话可以重复使用,避免频繁请求的启动成本)。
为了进一步解决您的观点 - 存储过程是指向(或也可以包含)原始sas代码的元数据对象。存储过程可以在服务器的任一类型(存储过程或工作空间)上运行。其选择取决于您上面的功能需求,以及根据池和负载平衡配置的性能考虑因素。