首页 > 解决方案 > Oracle 和 SQL Server(长文本)

问题描述

我正在尝试从 SQL Server 数据库的视图中读取包含超过 1000 个字符长的文本值的列。我收到一个长数据处理错误([unixODBC][Driver Manager]Invalid application buffer type {HY003})。

让我提醒您,我可以在 Oracle 11xe 中使用相同的配置进行操作。

我现在使用 Oracle 19.3 和 SQL Server 2012 (SP4)

/etc/odbcinst.ini:

[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.5.so.2.1
UsageCount=1
Threading = 1

/etc/odbc.ini:

[mag]
Description = SQL Server
Driver = ODBC Driver 17 for SQL Server
Trace = ON
Server = XXX.XXX.XXX.XXX
Database = dbname
Port = 1433

./hs/admin/initmag4odbc.ora

HS_FDS_CONNECT_INFO = mag
HS_FDS_TRACE_LEVEL = 4
HS_FDS_TRACE_FILENAME = /tmp/hsodbc.trc
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so
HS_NLS_NCHAR=UCS2
HS_KEEP_REMOTE_COLUNN_SIZE=ALL
HS_TRANSACTION_MODEL=COMMIT_CONFIRM

#
# ODBC specific environment variables
#
set ODBCINI=/etc/odbc.ini
set ODBCINST=/etc/odbcinst.ini

也许我需要设置一个参数?或者也许还有其他建议?

标签: sql-serveroracleodbc

解决方案


问题在于对 MSSQL 数据库的编码不稳定,我更改为 WE8MSWIN1252,一切开始工作,init*.ora 文件中的条目:

HS_FDS_REMOTE_DB_CHARSET = WE8MSWIN1252

推荐阅读