sql >> Base de Datos >  >> RDS >> Oracle

Configuración de parámetros de lenguaje de Oracle para DG4ODBC

En respuesta a las consultas de los clientes, este documento describe cómo configurar el HS_LANGUAGE y HS_NLS_NCHAR parámetros cuando se utiliza DG4ODBC.

Si está utilizando un controlador ODBC Unicode, como el controlador ODBC de SQL Server, asegúrese de que estos parámetros y valores estén presentes en su archivo de inicio DG4ODBC:

HS_LANGUAGE = language_territory.code_page
HS_NLS_NCHAR = UCS2

Reemplazar idioma , territorio y página_código con el idioma, el territorio y la página de códigos de Oracle® que correspondan con el idioma, la configuración regional y la página de códigos de sus bases de datos.

Por ejemplo, si su base de datos es SQL Server y su idioma y página de códigos son English (United States) y 1252 , su HS_LANGUAGE el parámetro se vería así:

HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252

El HS_NLS_NCHAR El valor del parámetro le dice a DG4ODBC que pase datos codificados en UCS-2 a las API de ODBC de Unicode, que es la codificación de caracteres que deben usarse los estados estándar de ODBC y, por lo tanto, es la que espera el Administrador de controladores unixODBC.

Asegúrese también de haber configurado NLS_LANG antes de iniciar su aplicación Oracle®. NLS_LANG le permite a Oracle® saber qué juego de caracteres está usando su máquina cliente. Por ejemplo:

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

Si está utilizando un controlador ANSI ODBC (que no admite llamadas API ODBC amplias), debe especificar un juego de caracteres que no sea UTF-8 en el HS_LANGUAGE valor. Por ejemplo, HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1 . Si no hace esto y el NLS_CHARACTERSET de su base de datos Oracle® el valor se establece en una codificación UTF-8, por ejemplo, AL32UTF8 , DG4ODBC:

  • Utiliza las API ODBC de Unicode, por ejemplo, SQLDriverConnectW , que el administrador de controladores unixODBC asigna a su equivalente ANSI (o si su HS_FDS_SHAREABLE_NAME el parámetro apunta al objeto compartido del controlador ODBC, hace que la conexión falle con un error de "símbolo indefinido").
  • Pasa datos codificados en UTF-8 a las API de ODBC, que no son compatibles con el administrador de controladores unixODBC. La conexión falla porque DG4ODBC pasa una cadena de conexión codificada en UTF-8 a SQLDriverConnectW , que el administrador de controladores unixODBC no puede manejar.

Controladores ODBC Unicode

Los controladores Unicode ODBC son compatibles con las API ODBC amplias, que tienen el formato SQLxxxW. Para verificar si su controlador ODBC es compatible con las API de ODBC amplias, consulte con su proveedor de controladores o habilite el registro del controlador ODBC, conéctese con DG4ODBC y examine el archivo de registro resultante. Por ejemplo:

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