Recentemente, um cliente compartilhou uma solução alternativa que resolveu um problema que ocorreu ao usar nosso driver ODBC do SQL Server para conectar o Oracle ao SQL Server. O erro que o cliente estava recebendo era:
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
e isso foi resolvido por:
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
No Oracle, "SELECT FDS_CLASS_NAME FROM HS_FDS_CLASS" retornará uma string que identifica sua versão DG4ODBC. Por exemplo.:
ODBC11.2.0.2.0_0008
Executando esta consulta:
SELECT * FROM HS_CLASS_CAPS WHERE FDS_CLASS_NAME ='ODBC11.2.0.2.0_0008';
retorna um número de "capacidades" que mostram como o DG4ODBC está configurado para se comportar.
No exemplo mostrado anteriormente, a coluna em que o cliente era um
NVARCHAR
tipo. Sob a direção do suporte da Oracle, o cliente altera o comportamento do DG4ODBC em relação a esse tipo de dados. O cliente encontrou o campo relevante em
HS_CLASS_CAPS
:564 TO_NCHAR(op1) 0
e alterei com o pacote Oracle,
DBMS_HS.ALTER_CLASS_CAPS
. Observe que o que os vários recursos do DG4ODBC fazem não são, ao que parece, documentados em nenhum lugar público. Este blog não pode, portanto, fornecer orientações específicas sobre como usá-los para resolver um problema específico. Em vez disso, o blog é fornecido para informá-lo de que você tem outra ferramenta à sua disposição, se editar parâmetros no arquivo de configuração DG4ODBC, init
Veja também
- Exclua ou atualize a instrução usando TG4MSQL 10.2 ou DG4ODBC 11.2 Referenciando o campo Nvarchar na cláusula Where dá erro ORA-2070
- Re:Problema com o Oracle Database Gateway para ODBC e Unicode