2016-10-13 4 views
0

ich dies mit Oracle verbinden:VBA: eine Verbindung zu Oracle DB, hat Kennwort ein spezielles Symbol

Set mDBConnection = New ADODB.connection  
Dim Rett As String 
Rett = "CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" 
Rett = Rett & "(HOST=myhost)(PORT=1521))(CONNECT_DATA =(SERVICE_NAME = myservice)));" 
Rett = Rett & "uid=" & mDBUser & ";" 
Rett = Rett & "pwd=" & mDBPassword & ";" 
MsgBox Rett 
mDBConnection.Open "DRIVER={Microsoft ODBC for Oracle};" & Rett 

Dies funktioniert gut, wenn das Passwort nicht Symbol enthält @. Ist dies der Fall - ich bekomme diese Fehlermeldung:

[Microsoft] [ODBC-Treiber für Oracle] [Oracle] ORA-12154: TNS: konnte nicht die Verbindungskennung lösen

angegeben

Wie ich dieses Symbol entkommen? Vielleicht sollte ich mich anders verbinden?

+0

Haben Sie das Kennwort in doppelte Anführungszeichen zu eingeschlossen versucht? –

+0

@FlorentB. Ich habe einzelne Anführungszeichen ausprobiert und es hat überhaupt nicht funktioniert. Wie kann ich mit doppelten Anführungszeichen umgehen? Dies kompiliert nicht: Rett = Rett & "pwd =" "& mDBPassword & "";" – javagirl

+0

Fügen Sie ein weiteres Doppelzitat hinzu, um ein Doppelzitat zu vermeiden: 'pwd =" "" & mDBPassword & """; ' –

Antwort

2

Vor 11g konnten Sie @ noch nicht einmal mit einem Kennwort anmelden, da es Teil der Oracle-Standardzeichenfolge ist (dh sql*plus> connect scott/[email protected] für die Verbindung mit der test-Instanz). Sie durften nur _, $ und # (nachfolgend als Sonderzeichen bezeichnet) nach dem ersten Zeichen bis zu 10g. Offensichtlich kann der von Ihnen verwendete Treiber die erforderlichen Anführungszeichen nicht verwenden, wenn Sie ein solches Zeichen verwenden. Daher würde ich empfehlen, den Treiber oder das Kennwort zu ändern.

You must enclose the following passwords in double-quotation marks:

Passwords containing multibyte characters.

Passwords starting with numbers or special characters and containing alphabetical characters. For example:

"123abc"

"#abc"

"123dc$"

Passwords containing any character other than alphabetical characters, numbers, and special characters. For example:

"abc>"

"[email protected]",

" "

Vollständige Informationen siehe Guidelines for Securing Passwords.

+2

ODBC-Treiber 'Microsoft ODBC für Oracle' Steinzeit und [veraltet] (https://msdn.microsoft.com/en-us/library/ms713590%28v=vs.85%29.aspx), es heißt "* Oracle 7.3x wird vollständig unterstützt; Oracle8 hat begrenzte Unterstützung *“. Installieren Sie ODBC-Treiber [von Oracle] (http://www.oracle.com/technetwork/topics/dotnet/downloads/net-downloads-160392.html), sollte dies besser funktionieren. –

+0

Danke @WernfriedDomscheit versuchen, in diese Richtung suchen. – javagirl

+0

@WernfriedDomscheit ich bereits oracle-Client-Software installiert haben. Wie kann ich überprüfen, ob oracle ODBC-Treiber bereits installiert ist oder nicht, sollte es kein Teil der oracle-Client-Installation sein? – javagirl

1

ODBC-Treiber „Microsoft ODBC für Oracle“ ist deprecated für viele Jahre, sollten Sie nicht verwenden. Die Dokumentation sagt "Oracle 7.3x wird vollständig unterstützt; Oracle8 hat eingeschränkte Unterstützung". Installieren Sie ODBC driver from Oracle, dies sollte besser funktionieren.

Ihr Zuschaltbefehls wie dieses wäre:

mDBConnection.Open "DRIVER={Oracle in OraClient11g_home1};dbq=" & mDBServer & ";" & _ 
        "uid=" & mDBUser & ";pwd=""" & mDBPassword & """;" 

Falls Sie nicht wissen, den genauen Namen des ODBC-Treiber Registrierungs bei HKLM\Software\ODBC\ODBCINST.INI\*\Drivers für String SQORA32.dll suchen. Der Elternschlüssel gibt den genauen Namen des ODBC-Treibers an.

Sie könnten auch OLE DB-Provider wie diese verwenden:

mDBConnection.Open "Provider=OraOLEDB.Oracle;Data Source=" & mDBServer & ";" & _ 
        "User ID=" & mDBUser & ";Password=""" & mDBPassword & """;" 

wie ODBC Sie nicht wissen, ob der Fahrer/Anbieter überhaupt auf anderen Rechnern installiert ist.

Verwandte Themen