sql >> Database teknologi >  >> RDS >> Oracle

Indstilling af Oracle-sprogparametre for DG4ODBC

Som svar på kundeforespørgsler beskriver dette dokument, hvordan du indstiller HS_LANGUAGE og HS_NLS_NCHAR parametre ved brug af DG4ODBC.

Hvis du bruger en Unicode ODBC-driver, såsom SQL Server ODBC-driveren, skal du sikre dig, at disse parametre og værdier er til stede i din DG4ODBC init-fil:

HS_LANGUAGE = language_territory.code_page
HS_NLS_NCHAR = UCS2

Erstat sprog , område og kodeside med Oracle® sprog, territorium og kodetabel, der svarer til dine databasers sprog, lokalitet og kodetabel.

For eksempel, hvis din database er SQL Server, og dens sprog og tegntabel er English (United States) og 1252 , din HS_LANGUAGE parameter ville se sådan ud:

HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252

HS_NLS_NCHAR parameterværdi fortæller DG4ODBC at videregive UCS-2-kodede data til Unicode ODBC API'erne, som er tegnkodningen, som ODBC-standardtilstandene skal bruges, og som derfor er den, som unixODBC Driver Manager forventer.

Sørg også for, at du har indstillet NLS_LANG før du starter din Oracle®-applikation. NLS_LANG lader Oracle® vide, hvilket tegnsæt din klientmaskine bruger. For eksempel:

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

Hvis du bruger en ANSI ODBC-driver (som ikke understøtter brede ODBC API-kald), skal du angive et ikke UTF-8-tegnsæt i HS_LANGUAGE værdi. For eksempel HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1 . Hvis du ikke gør dette og din Oracle®-databases NLS_CHARACTERSET værdi er sat til en UTF-8-kodning, for eksempel AL32UTF8 , DG4ODBC:

  • Bruger Unicode ODBC API'er, f.eks. SQLDriverConnectW , som unixODBC Driver Manager tilknytter deres ANSI-ækvivalent (eller hvis din HS_FDS_SHAREABLE_NAME parameter peger på ODBC-driverens delte objekt, får forbindelsen til at mislykkes med en "udefineret symbol"-fejl).
  • Vidererer UTF-8-kodede data til ODBC API'erne, som unixODBC Driver Manager ikke understøtter. Forbindelsen mislykkes, fordi DG4ODBC sender en UTF-8-kodet forbindelsesstreng til SQLDriverConnectW , som unixODBC Driver Manager ikke er i stand til at håndtere.

Unicode ODBC-drivere

Unicode ODBC-drivere understøtter de brede ODBC API'er, som har formen SQLxxxW. For at kontrollere, om din ODBC-driver understøtter brede ODBC API'er, skal du enten tjekke med din driverleverandør eller aktivere ODBC-driverlogning, oprette forbindelse til DG4ODBC og undersøge den resulterende logfil. For eksempel:

$ 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. Mysql rækkefølge efter specifikke ID-værdier

  2. Hvordan tæller man dage undtagen søndage mellem to datoer i Postgres?

  3. Bedste ækvivalent til IsInteger i SQL Server

  4. Android Room - Sådan nulstiller du automatisk genereret tabel primær nøgle ved hver appkørsel