2015-11-05 179 views
0

我試圖從本地計算機連接到Oracle數據庫,並使用以下libname語句。SAS /使用rsubmit連接到Oracle

libname liblibb oracle path='galaxy' defer=no 
        connection=globalread readbuff=4000 ; 

這個工程...因爲它使用Windows AD詳細信息登錄。 但是,問題是當我用rsubmit(服務器UNIX)運行這個libname語句。

rsubmit; 
libname liblibb oracle path='galaxy' defer=no 
        connection=globalread readbuff=4000 ; 

endrsubmit; 

錯誤:

ORA-01017 Invalid Username/Password 
Error in the LIBNAME statement 

但是,當我輸入用戶名和密碼,使用它的作品。

rsubmit; 
libname liblibb oracle path='galaxy' user=xxxx password='xxxx'  
defer=no 
        connection=globalread readbuff=4000 ; 
endrsubmit; 

有沒有登錄到甲骨文rsubmit沒有在LIBNAME語句或至少類似的用戶名和密碼dbprompt寫入用戶名和密碼信息任何可能的方式?或者我們如何讓UNIX與Windows AD一起工作與Oracle同步,因此它需要單點登錄概念。

+0

您可以使用其他工具(如sqlplus)從Unix機器連接到Oracle,而無需重新輸入憑據嗎? – Tom

+0

@Tom雅,但我正在使用SAS。 – user3658367

+0

@ user3658367我認爲Tom的看法是,如果SQL * Plus可以無需密碼連接,也許這種方法可以與SAS一起使用。 – Joe

回答

0

如果您不想在您的rsubmit中提交密碼,則需要在UNIX數據庫的unix框上擁有憑據。通過使用rsubmit,數據庫可以看到您嘗試登錄的unix版本,而不是您的windows版本。

0

當您使用rsubmit時,您將語句傳遞給遠程服務器,並且該語句正在遠程服務器上運行。因此 1.您的憑據應當提供給遠程服務器上的語句時,你的本地計算機的ODBC連接必須是具有上使用LIBNAME語句 2.您的遠程服務器應該有訪問Oracle

在第一種情況下, uid和密碼保存在連接配置文件中。所以不需要指定。 在第二種情況下,配置文件沒有保存您的憑據。因此,您需要在遠程機器上使用它們。 一種方法是將用戶名和密碼保存爲宏並在服務器上提供。 典型場景將如下所示 %let dbpw = your_db_passwd; %let usrid = your_user_id; 這些可放置在您感到安全的任何位置,可能位於腳本上的符號或本地計算機外部的某些位置。用%include語句包含它。

%include passwd_file.sas; 

現在讓他們在遠程機器上可作爲

%syslput dpw=&dbpw; 
%syslput userid=&userid; 
rsubmit; 
libname liblibb oracle path='galaxy' user=&userid password="&dbpw"  
defer=no 
        connection=globalread readbuff=4000 ; 
your_program_statements_here; 
endrsubmit; 

這是我如何使用它。