最近、お客様が、SQLServerODBCドライバーを使用してOracleをSQLServerに接続するときに発生した問題を解決する回避策を共有しました。お客様が受けていたエラーは次のとおりです。
DELETE FROM mytable@MYLINKEDDATABASE WHERE MyCol = 'MyValue'; 17:01:01 [DELETE - 0 row(s), 0.000 secs] [Error Code: 2070, SQL State: 42000] ORA-02070: database MYLINKEDDATABASE does not support some function in this context
これは次の方法で解決されました:
SQL> select fds_class_name from HS_FDS_CLASS; ODBC11.2.0.2.0_0008 exec dbms_hs.replace_class_caps('ODBC11.2.0.2.0_0008', 564,'ODBC11.2.0.2.0_0008',564, 8191,NULL,1); PL/SQL procedure successfully completed. SQL> commit; Commit complete
Oracleでは、「SELECT FDS_CLASS_NAME FROM HS_FDS_CLASS」は、DG4ODBCのバージョンを識別する文字列を返します。例:
ODBC11.2.0.2.0_0008
このクエリの実行:
SELECT * FROM HS_CLASS_CAPS WHERE FDS_CLASS_NAME ='ODBC11.2.0.2.0_0008';
DG4ODBCがどのように動作するように構成されているかを示すいくつかの「機能」を返します。
前に示した例では、顧客の列はNVARCHAR
でした タイプ。 Oracleサポートの指示の下で、お客様はこのデータ型に関してDG4ODBCの動作を変更します。
お客様は、HS_CLASS_CAPS
で関連フィールドを見つけました :
564 TO_NCHAR(op1) 0
OracleパッケージDBMS_HS.ALTER_CLASS_CAPS
で変更しました 。
さまざまなDG4ODBC機能が行うことは、公開されている場所では文書化されていないようです。したがって、このブログでは、特定の問題を解決するためにそれらを使用する方法に関する具体的なガイダンスを提供することはできません。代わりに、ブログは、DG4ODBC構成ファイルのパラメーターを編集しても、init
関連項目
- TG4MSQL10.2またはDG4ODBC11.2を使用してステートメントを削除または更新します。Where句でNvarcharフィールドを参照するとORA-2070エラーが発生します
- Re:ODBCおよびUnicode用のOracleDatabaseGatewayの問題