sql >> Database >  >> RDS >> Oracle

Oracle-taalparameters instellen voor DG4ODBC

Als antwoord op vragen van klanten wordt in dit document beschreven hoe u de HS_LANGUAGE . instelt en HS_NLS_NCHAR parameters bij gebruik van DG4ODBC.

Als u een Unicode ODBC-stuurprogramma gebruikt, zoals het SQL Server ODBC-stuurprogramma, zorg er dan voor dat deze parameters en waarden aanwezig zijn in uw DG4ODBC-initbestand:

HS_LANGUAGE = language_territory.code_page
HS_NLS_NCHAR = UCS2

Vervang taal , gebied en code_page met de taal, het territorium en de codepagina van Oracle® die overeenkomen met de taal, de landinstelling en de codepagina van uw databases.

Als uw database bijvoorbeeld SQL Server is en de taal en codepagina English (United States) zijn en 1252 , uw HS_LANGUAGE parameter zou er als volgt uitzien:

HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252

De HS_NLS_NCHAR parameterwaarde vertelt DG4ODBC om UCS-2-gecodeerde gegevens door te geven aan de Unicode ODBC API's, wat de tekencodering is die de ODBC-standaardstatussen moeten gebruiken en daarom degene is die de unixODBC Driver Manager verwacht.

Zorg er ook voor dat u NLS_LANG . heeft ingesteld voordat u uw Oracle®-toepassing start. NLS_LANG laat Oracle® weten welke tekenset uw clientcomputer gebruikt. Bijvoorbeeld:

$ echo $LANG
en_US.UTF-8
$ NLS_LANG=AMERICAN_AMERICA.AL32UTF8 ./sqlplus

Als u een ANSI ODBC-stuurprogramma gebruikt (dat geen brede ODBC API-aanroepen ondersteunt), moet u een niet-UTF-8-tekenset opgeven in de HS_LANGUAGE waarde. Bijvoorbeeld HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1 . Als u dit niet doet en de NLS_CHARACTERSET . van uw Oracle®-database waarde is ingesteld op een UTF-8-codering, bijvoorbeeld AL32UTF8 , DG4ODBC:

  • Gebruikt de Unicode ODBC API's, bijvoorbeeld SQLDriverConnectW , die de unixODBC Driver Manager toewijst aan hun ANSI-equivalent (of als uw HS_FDS_SHAREABLE_NAME parameter verwijst naar het gedeelde object van het ODBC-stuurprogramma, waardoor de verbinding mislukt met een "undefined symbol"-fout).
  • Geeft UTF-8-gecodeerde gegevens door aan de ODBC-API's, die de unixODBC Driver Manager niet ondersteunt. De verbinding mislukt omdat DG4ODBC een UTF-8-gecodeerde verbindingsreeks doorgeeft aan SQLDriverConnectW , die de unixODBC Driver Manager niet aankan.

Unicode ODBC-stuurprogramma's

Unicode ODBC-stuurprogramma's ondersteunen de brede ODBC-API's, die de vorm SQLxxxW hebben. Om te controleren of uw ODBC-stuurprogramma brede ODBC-API's ondersteunt, neemt u contact op met de leverancier van uw stuurprogramma of schakelt u ODBC-stuurprogrammalogboekregistratie in, maakt u verbinding met DG4ODBC en bekijkt u het resulterende logbestand. Bijvoorbeeld:

$ more /etc/odbc.ini
[SQLSERVER_SAMPLE]
.
.
.
Logging=Yes
LogFile=/tmp/mssql.log

$ ./sqlplus / as sysdba
$ select * from mytable@mssqllink;
$ exit
$ more /tmp/mssql.log
.
.
.
ENTRY:   SQLGetInfoW: connection_handle...

  1. SELECT max(x) retourneert null; hoe kan ik ervoor zorgen dat het 0 teruggeeft?

  2. VOEG WAARDEN IN WAAR NIET BESTAAT

  3. Veilige multicloud MySQL-replicatie implementeren op AWS en GCP met VPN

  4. Een opzoekbesturingselement toevoegen aan een formulier in Access 2016