Sas 确定服务器上下文(工作区服务器与存储进程服务器)
我希望有条件地执行代码,这取决于我是在工作区中还是在存储的Process server上下文中 我可以通过测试自动STP变量的存在性来做到这一点,例如Sas 确定服务器上下文(工作区服务器与存储进程服务器),sas,sas-metadata,sas-stored-process,Sas,Sas Metadata,Sas Stored Process,我希望有条件地执行代码,这取决于我是在工作区中还是在存储的Process server上下文中 我可以通过测试自动STP变量的存在性来做到这一点,例如\u metaperson,但这不会非常健壮 假设我已经有一个元数据连接,如何最好地检查我的服务器类型?防弹的方法是创建一个宏变量,该变量由autoexec或config在所需的服务器上下文中初始化 当然,这只有在您有权修改存储在sas配置文件夹中的文件时才有效。存储的process server将使用正在运行的程序预设\u程序宏变量。我不知道这个
\u metaperson
,但这不会非常健壮
假设我已经有一个元数据连接,如何最好地检查我的服务器类型?防弹的方法是创建一个宏变量,该变量由autoexec或config在所需的服务器上下文中初始化
当然,这只有在您有权修改存储在sas配置文件夹中的文件时才有效。存储的process server将使用正在运行的程序预设
\u程序
宏变量。我不知道这个宏变量在STP执行上下文中是否是只读的
但是正如您所说,工作区上下文中的程序可以设置一个\u program
宏变量
对于工作区会话,请查找\u CLIENTAPP
宏变量
我不知道要调用的函数或可以检查的不可变系统选项。在这两种上下文中尝试PROC选项,看看会弹出什么。
OBJECTSERVERPARMS
值(如果报告)是名称=值对的列表。其中一个是server=
,可能会有所区别。Hurrah-事实上,有一个自动变量可以做到这一点-sysprocessmode
(从9.4开始提供)
摘录自:
SYSPROCESSMODE是一个只读的自动宏变量,它包含
当前SAS会话运行模式或服务器类型的名称,例如
以下是:
- SAS DMS会话
- SAS批处理模式
- SAS线路模式
- SAS/连接会话
- SAS共享服务器
- SAS互联网服务器
- SAS工作区服务器
- SAS池工作区服务器
- SAS存储进程服务器
- SAS OLAP服务器
- SAS表服务器
- SAS元数据服务器
但它不是防弹的-有人随后可以在其他服务器上下文中创建类似的宏变量:-)感谢这些想法。。
options
:-/中没有任何内容,但在尝试对\u webout
fileref(流引擎)进行条件测试后,我终于找到了sysprocessmode
!