sql-server - 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
也许我需要设置一个参数?或者也许还有其他建议?
解决方案
问题在于对 MSSQL 数据库的编码不稳定,我更改为 WE8MSWIN1252,一切开始工作,init*.ora 文件中的条目:
HS_FDS_REMOTE_DB_CHARSET = WE8MSWIN1252
推荐阅读
- scapy - 使用 scapy 嗅探上游 HTTP 请求
- blender - 为每个面而不是整个对象添加搅拌机纹理
- blazor - Blazor 包罗万象的路由例外
- mysql - 无需对数据进行写访问的数据库维护
- python - 分类概率校准代码
- python - ValueError:尝试绘制 SVM 时 x 和 y 的大小必须相同
- mysql - 是否可以查询表以查找包含非 ASCII UTF-8 字母的行?
- serial-port - 无法使用 CM574 通过 COM_REC 块接收串行 RS422 数据
- angular - 应用程序在 Chrome 91 中无休止地重启,“问题”中出现 cookie 错误
- glassfish - 用于现场生产的启动器 Glassfish4.1.2 设置