Oracle DB Connect String für UTF8 Verbindung
Hallo alle zusammen,
ich habe einen Oracle DB String der seit Jahren einwandfrei funktioniert.
Die Variablen werden auch alle richtig übergeben(will sie hier nicht reinschreiben)
Sonst würde es bei NICHT UTF8 auch fehlschlagen)
Host
Port
Servicename
Trim(User)
Trim(pw)
ich nutze oraoledb12.dll.
cnDB.Open "Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=" & Host & ")(Port=" & Port & "))(CONNECT_DATA=(SERVICE_NAME=" & Servicename & ")));User ID=" & Trim(User) & ";Password=" & Trim(pw) & ""
Jetzt habe ich eine UTF8 Umgebung dazu bekommen und da bekomme ich immer die Fehlermeldung "Falscher User oder Passwort". Im SQL Developer kann ich aber mit dem User und Passwort die DB öffnen.
Host, Port und Servicename wurden natürlich auf die neue Umgebung angepasst und wie im SQL Developer eingetragen.
Es liegt wohl an dem UTF8 Code aber ich weiß nicht wie ich dem Connection String dies mitteilen soll dass es sich bei der Verbindung um eine UFT8 Verbindung handelt und somit die Strings in Unicode umgewandelt werden.
Habe jetzt eine Weile gegoogelt aber nichts dazu gefunden.
Nur das der NLS_CHARACTERSET der Datenbank ein AL32UTF8 ist.
Gibt es noch einen Parameter mit dem ich das hinterlegen kann?
Viele Grüße aus Bamberg
Ralf
ich habe einen Oracle DB String der seit Jahren einwandfrei funktioniert.
Die Variablen werden auch alle richtig übergeben(will sie hier nicht reinschreiben)
Sonst würde es bei NICHT UTF8 auch fehlschlagen)
Host
Port
Servicename
Trim(User)
Trim(pw)
ich nutze oraoledb12.dll.
cnDB.Open "Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=" & Host & ")(Port=" & Port & "))(CONNECT_DATA=(SERVICE_NAME=" & Servicename & ")));User ID=" & Trim(User) & ";Password=" & Trim(pw) & ""
Jetzt habe ich eine UTF8 Umgebung dazu bekommen und da bekomme ich immer die Fehlermeldung "Falscher User oder Passwort". Im SQL Developer kann ich aber mit dem User und Passwort die DB öffnen.
Host, Port und Servicename wurden natürlich auf die neue Umgebung angepasst und wie im SQL Developer eingetragen.
Es liegt wohl an dem UTF8 Code aber ich weiß nicht wie ich dem Connection String dies mitteilen soll dass es sich bei der Verbindung um eine UFT8 Verbindung handelt und somit die Strings in Unicode umgewandelt werden.
Habe jetzt eine Weile gegoogelt aber nichts dazu gefunden.
Nur das der NLS_CHARACTERSET der Datenbank ein AL32UTF8 ist.
Gibt es noch einen Parameter mit dem ich das hinterlegen kann?
Viele Grüße aus Bamberg
Ralf
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 593312
Url: https://administrator.de/contentid/593312
Ausgedruckt am: 23.11.2024 um 04:11 Uhr
2 Kommentare
Neuester Kommentar
vermutlich wird der Benutzername und das Paßwort fälschlicherweise als UTF8 übergeben, du arbeitest da ja mit Variablen.
Soweit ich mich erinnere, erwartet der Oracle-server solche Daten immer als 8 Bit ASCII auch wenn die Instanz als AL32UTF8 (und die Datenbank als AL16UTF16) konfiguriert ist.
Gibt ürigens noch einen Spfile Eintrag, der die UTF8 Fähigkeit beeinflußt - NLS Length semantics muß für einige Anwenungsfälle auf "CHAR" stehen, für andere auf "BYTE". Ich würde noch mal in die SPFILE Variablen reinschauen (per Anmeldugn am WEbinterface des Servers zugänglich)
Kann auch sein daß das an Sonderzeichen im Kennwort liegt, die Besonderheit bei UTF8 ist ja daß die esten 127 Ascii Zeichen als 8 Bit übergeben werden, aber wenn ein Zeichen ab Code 128 dabei ist dann wird aus einem Byte dann zwei.
Soweit ich mich erinnere, erwartet der Oracle-server solche Daten immer als 8 Bit ASCII auch wenn die Instanz als AL32UTF8 (und die Datenbank als AL16UTF16) konfiguriert ist.
Gibt ürigens noch einen Spfile Eintrag, der die UTF8 Fähigkeit beeinflußt - NLS Length semantics muß für einige Anwenungsfälle auf "CHAR" stehen, für andere auf "BYTE". Ich würde noch mal in die SPFILE Variablen reinschauen (per Anmeldugn am WEbinterface des Servers zugänglich)
Kann auch sein daß das an Sonderzeichen im Kennwort liegt, die Besonderheit bei UTF8 ist ja daß die esten 127 Ascii Zeichen als 8 Bit übergeben werden, aber wenn ein Zeichen ab Code 128 dabei ist dann wird aus einem Byte dann zwei.