【发布时间】:2018-03-21 14:56:33
【问题描述】:
我目前正在开发一个有关 Azure 数据工厂的项目,我认为编码存在一些问题。 我没有设法在文档中找到任何内容,您也许有答案?
我正在尝试在 SQL Server 和 Oracle 之间建立数据流。 我在 SQL Server 上的源表中的字段是 nvarchar(255)。
为了使流程正常工作,我必须在 Varchar2(255) 中配置目标字段。如果我尝试输入 nvarchar(255),则流量会出错:
ERROR [22001] [Microsoft][ODBC Oracle Wire Protocol driver]String data, right truncated.
否则,使用 Varchar2(255) 可以正常工作。
但是!我的问题来自特殊字符:
如果在我的数据源中,有像 ('é','è','à') 这样的重音符号,则流量会出错:
ERROR [22001] [Microsoft][ODBC Oracle Wire Protocol driver]String data, right truncated.
我尝试使目标字段更长,以向我的选择请求添加子字符串,但它不起作用。我无法转移特殊字符...
(顺便说一句,我尝试直接在 oracle 数据库中使用我的请求值进行“插入”,它工作正常)。
SQL Server 配置为 SQL_Latin1_General_CP1_CI_AS oracle数据库配置为AL16UTF16,版本为11.2.0.4.0。
您对解决该问题有什么想法或建议吗? 祝你有美好的一天!
【问题讨论】:
-
“Oracle 数据库在 AL16UTF16 中配置”是什么意思?在 Oracle 中,您有 2 个字符集,
NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET。对于VARCHAR2列,发生NLS_CHARACTERSET。 -
我的错:NLS_CHARACTERSET -> AL32UTF8 和 NLS_NCHAR_CHARACTERSET->AL16UTF16
-
您是否尝试在 SQL Server 上设置
NLS_LANG=.WE8ISO8859P1环境变量? -
我做了更多的测试,显然,我可以插入特殊字符。但是 Juste 1. 如果我尝试插入 'é',没关系。但是'éé' 不行。你有什么解释吗?
-
确实这看起来很奇怪。我不知道。
标签: sql-server oracle azure encoding azure-data-factory