在批处理模式下运行时提示输入SAS ODBC连接密码

在批处理模式下运行时提示输入SAS ODBC连接密码,sas,Sas,出于各种原因,我更喜欢尽可能以批处理模式运行SAS程序。出于安全原因,我更愿意让SAS在与数据仓库建立ODBC连接时提示我输入密码。这两样东西能同时给我吗 以下代码在以交互方式从SAS运行时工作正常,但在批运行时不会创建提示 proc sql; connect to odbc (prompt); quit; 有人知道一种方法可以让它工作吗?(另外,我正在寻找一种专门使用connect语句的解决方案;SAS/ACCESSlibname访问Teradata的方法对我来说不可用。)我不确定是

出于各种原因,我更喜欢尽可能以批处理模式运行SAS程序。出于安全原因,我更愿意让SAS在与数据仓库建立ODBC连接时提示我输入密码。这两样东西能同时给我吗

以下代码在以交互方式从SAS运行时工作正常,但在批运行时不会创建提示

proc sql;
    connect to odbc (prompt);
quit;

有人知道一种方法可以让它工作吗?(另外,我正在寻找一种专门使用
connect
语句的解决方案;SAS/ACCESS
libname
访问Teradata的方法对我来说不可用。)

我不确定是否有批处理程序可以提示您。但是,您可以通过使用
SYSPARM
将密码(或连接字符串的任何部分或整个字符串)作为运行批处理程序时传递给SAS的参数来解决此问题

然后,您可以在执行程序时在命令行中键入密码。您可以轻松地执行一些操作,例如在正常的“run SAS batch”程序中包含“%1”参数,或者为此用例编写自定义参数


如果您希望通过右键单击菜单运行运行,可以通过在Unix中编写VB脚本或Powershell脚本(Windows)或类似的脚本来解决此问题,该脚本将打开一个提示窗口(通过操作系统)以获取参数,然后批量运行程序(然后将其添加到右键单击菜单)

不记得像%window语句这样的笨拙语句是否可以成批工作。我想它可能会让你得到一个非常简单的提示,然后输入一些值。根据您的环境,可能还有其他替代方法。带有元数据的SAS服务器有很多。即使在Windows上,也可以考虑将连接信息存储在只能访问的.txt文件中。有时PWENCODE足以让人们感到安全…
%window
批量工作,但一旦它从用户那里获得交互,它就会再次消失,因此odbc命令仍然会在失败后提交。我还没有找到任何一种“保持打开”的技巧…我问题中代码的好处是它不会最终将密码打印到日志或其他任何地方。这正是我想要它的原因。此外,99%的时间我都是通过一个由我编写的vim插件编写和提交的命令行来运行SAS的——因此需要一点脚本的解决方案是可以的。我认为如果你将它传递给&SYSPARM,而你没有打开SYMBOLGEN,它就不应该将密码打印到日志中。但我现在总是使用基于凭据的身份验证,所以我想我不是100%确定。另一方面,您也可以在操作系统中创建一个ODBC连接,然后按名称引用该ODBC连接(因此凭据被保存,但保存在一个相对安全的位置)。