2016-06-28 16 views
0

我試圖連接到Oracle數據庫,我相信版本是12c,我可以使用客戶端連接到同一個數據庫(SQL開發人員),但在嘗試使用VBscript進行連接時遇到問題,我希望將其用作應用程序的一部分。Oracle可以從客戶端連接,但不能從腳本連接 - 無效的用戶/密碼

以下是錯誤消息 -

 **Exception: OraOLEDB - ORA-01017: invalid username/password; logon denied** 

這裏是我的腳本,我使用的連接 -

Option Explicit 
On Error Resume Next 
'Dim strSQLQuery: strSQLQuery = "SELECT sysdate FROM dual" 
Dim strDBDesc: strDBDesc = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = XXX)(PORT = XXX))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME =  XXXX)))" 
Dim strUserID: strUserID = "user" 
Dim strPassword: strPassword = "pass" 
Dim ADODBConnection: Set ADODBConnection =        CreateObject("ADODB.Connection") 
Dim strConnection 
strConnection = "Provider=OraOLEDB.Oracle;Data Source=" & strDBDesc & _ 
      ";User ID=" & strUserID & ";Password=" & strPassword & ";" 

ADODBConnection.Open strConnection 

If Err <> 0 Then 
    WScript.Echo "An error occurred in Opening Connection: " & Err.Number & " " & Err.Description & " " & Err.Source 
End If 
Set ADODBConnection = Nothing 
+0

別人我打賭的用戶名和/或密碼是不同的。無論是或者你試圖連接到兩個應用程序不同的數據庫。 –

+0

我提交了一個編輯標記VBA的問題,以便它可以覆蓋可以回答的人。我有一個快速的外觀和調用的語法看起來是正確的。您可以使用strDBDesc中的Oracle服務名稱而不是整個連接描述來嘗試它。從cmd提示符使用TNSPING來檢查您的客戶端是否正確解析了Oracle服務名稱。如果這不起作用,請嘗試使用不同類型的提供程序連接。 –

+0

賈斯汀 - 我檢查了我的證件至少25次,他們似乎是正確的! – RData

回答

0
  1. 是密碼簡單或特殊字符?使用轉義序列或用特殊字符引號。

  2. 根據以下代碼在上面的代碼片段中使用「ADODBConnection.ConnectionString = strConnection」,然後打開連接。

  3. 放置斷點,看看什麼是作爲連接字符串傳遞給驅動程序。

參見:https://docs.oracle.com/cd/E47955_01/win.121/e18594/using.htm

+0

Password has a'_ '並且沒有其他特殊字符,但它具有大寫和小寫的組合。我已經把連接字符串,我已經驗證了腳本,但連接到其他實例,並沒有問題。清單密碼和用戶名已針對其他實例發佈,並且在使用相同腳本進行連接時沒有問題。 – RData

+0

檢查用戶的連接權限。原因我沒有看到任何代碼問題。所以它應該在這個實例或用戶連接失敗。檢查連接權限。 – Sud