sql >> Databáze >  >> RDS >> Oracle

Nastavení jazykových parametrů Oracle pro DG4ODBC

V reakci na dotazy zákazníků tento dokument popisuje, jak nastavit HS_LANGUAGE a HS_NLS_NCHAR parametry při použití DG4ODBC.

Pokud používáte ovladač Unicode ODBC, jako je ovladač SQL Server ODBC, ujistěte se, že v inicializačním souboru DG4ODBC jsou tyto parametry a hodnoty:

HS_LANGUAGE = language_territory.code_page
HS_NLS_NCHAR = UCS2

Nahraďte jazyk , území a code_page s jazykem, oblastí a kódovou stránkou Oracle®, které odpovídají jazyku, národnímu prostředí a kódové stránce vaší databáze.

Pokud je například vaše databáze SQL Server a její jazyk a kódová stránka jsou English (United States) a 1252 , váš HS_LANGUAGE parametr by vypadal takto:

HS_LANGUAGE = ENGLISH_AMERICA.WE8MSWIN1252

HS_NLS_NCHAR hodnota parametru říká DG4ODBC, aby předala data kódovaná UCS-2 do Unicode ODBC API, což je znak kódování standardních stavů ODBC, který by měl být použit, a proto je to ten, který unixODBC Driver Manager očekává.

Ujistěte se také, že jste nastavili NLS_LANG před spuštěním aplikace Oracle®. NLS_LANG umožňuje společnosti Oracle® vědět, jakou znakovou sadu používá váš klientský počítač. Například:

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

Pokud používáte ovladač ANSI ODBC (který nepodporuje široká volání ODBC API), musíte v HS_LANGUAGE zadat znakovou sadu mimo UTF-8. hodnota. Například HS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1 . Pokud to neuděláte, a NLS_CHARACTERSET vaší databáze Oracle® hodnota je nastavena na kódování UTF-8, například AL32UTF8 , DG4ODBC:

  • Používá rozhraní Unicode ODBC API, například SQLDriverConnectW , které unixODBC Driver Manager mapuje na jejich ekvivalent ANSI (nebo pokud váš HS_FDS_SHAREABLE_NAME parametr ukazuje na sdílený objekt ovladače ODBC, způsobí selhání připojení s chybou „nedefinovaný symbol“).
  • Předává data kódovaná UTF-8 do rozhraní API ODBC, která správce ovladačů unixODBC nepodporuje. Připojení se nezdaří, protože DG4ODBC předává připojovací řetězec s kódováním UTF-8 do SQLDriverConnectW , kterou unixODBC Driver Manager nedokáže zpracovat.

Ovladače ODBC Unicode

Ovladače ODBC Unicode podporují široká rozhraní API ODBC, která mají formu SQLxxxW. Chcete-li zkontrolovat, zda váš ovladač ODBC podporuje široká rozhraní ODBC API, obraťte se na dodavatele ovladače nebo povolte protokolování ovladače ODBC, připojte se k DG4ODBC a prohlédněte si výsledný soubor protokolu. Například:

$ 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. Při aktualizaci pomocí Dataadapter došlo k výjimce DBConcurrency

  2. Psaní dotazu pro více tabulek v php

  3. Odstranění trasovacích souborů pomocí ADRCI

  4. 4 způsoby, jak získat definici uložené procedury pomocí Transact-SQL