我有一个SQL Server数据库,其中包含一列nvarchar(4000)
数据类型的表。当我尝试通过dblink从Oracle读取数据时,我没有看到nvarchar(4000)
列。所有其他列的数据都会正确显示。
有人可以帮助我在这里找到问题以及如何解决它吗?
答案 0 :(得分:1)
附录A-1 ......
ODBC Oracle评论
SQL_WCHAR NCHAR -
SQL_WVARCHAR
NVARCHAR - 如果Oracle DB字符集= Unicode,则SQL_WLONGVARCHAR LONG。 否则,不支持
通常nvarchar(max)
映射到SQL_WLONGVARCHAR
,如果Oracle数据库字符集为unicode
,则此数据类型只能映射到Oracle。
要检查数据库字符集,请原谅:
select * from nls_parameters;
并查看:NLS_CHARACTERSET
<强>更新强>
NLS_CHARACTERSET
必须是unicode
字符集 - 例如AL32UTF8
(如果您知道自己在做什么,或者请DBA去做,请执行此操作。)
NCHAR
字符集未被用作映射到使用普通数据库字符集的Oracle LONG
。
第二个解决方案是在SQL Server端创建一个视图,将nvarchar(max)
拆分为几个nvarchar(xxx)
,然后从视图中进行选择,并在Oracle中再次连接内容。(如果你将字符集更改为unicode时遇到问题,那么这种方法就是困难的方法。)