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

Impostazione dei parametri del linguaggio Oracle per DG4ODBC

In risposta alle domande dei clienti, questo documento descrive come impostare il HS_LANGUAGE e HS_NLS_NCHAR parametri quando si utilizza DG4ODBC.

Se stai utilizzando un driver ODBC Unicode come il driver ODBC di SQL Server, assicurati che questi parametri e valori siano presenti nel tuo file di inizializzazione DG4ODBC:

HS_LANGUAGE = language_territory.code_page
HS_NLS_NCHAR = UCS2

Sostituisci lingua , territorio e code_page con la lingua, il territorio e la codepage Oracle® che corrispondono alla lingua, alla localizzazione e alla codepage del database.

Ad esempio, se il database è SQL Server e la lingua e la codepage sono English (United States) e 1252 , il tuo HS_LANGUAGE il parametro sarebbe simile a questo:

HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252

Il HS_NLS_NCHAR Il valore del parametro indica a DG4ODBC di passare i dati codificati con UCS-2 alle API ODBC Unicode, che è la codifica dei caratteri che devono essere utilizzati gli stati standard ODBC ed è quindi quella che si aspetta da Gestione driver unixODBC.

Assicurati anche di aver impostato NLS_LANG prima di avviare l'applicazione Oracle®. NLS_LANG consente a Oracle® di sapere quale set di caratteri sta utilizzando la tua macchina client. Ad esempio:

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

Se stai utilizzando un driver ODBC ANSI (che non supporta le chiamate API ODBC wide), devi specificare un set di caratteri non UTF-8 in HS_LANGUAGE valore. Ad esempio, HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1 . In caso contrario, il NLS_CHARACTERSET del database Oracle® value è impostato su una codifica UTF-8, ad esempio AL32UTF8 , DG4ODBC:

  • Utilizza le API ODBC Unicode, ad esempio SQLDriverConnectW , che unixODBC Driver Manager associa al loro equivalente ANSI (o se il tuo HS_FDS_SHAREABLE_NAME il parametro punta all'oggetto condiviso del driver ODBC, fa sì che la connessione abbia esito negativo con un errore di "simbolo non definito").
  • Passa i dati codificati UTF-8 alle API ODBC, che non sono supportati da unixODBC Driver Manager. La connessione non riesce perché DG4ODBC passa una stringa di connessione codificata UTF-8 a SQLDriverConnectW , che unixODBC Driver Manager non è in grado di gestire.

Driver ODBC Unicode

I driver ODBC Unicode supportano le API ODBC wide, che sono nella forma SQLxxxW. Per verificare se il driver ODBC supporta API ODBC ampie, verificare con il fornitore del driver oppure abilitare la registrazione del driver ODBC, connettersi con DG4ODBC ed esaminare il file di registro risultante. Ad esempio:

$ 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...