从Oracle读取SQL Server数据库表时缺少nvarchar列

时间:2015-01-29 07:53:21

标签: sql-server oracle

我有一个SQL Server数据库,其中包含一列nvarchar(4000)数据类型的表。当我尝试通过dblink从Oracle读取数据时,我没有看到nvarchar(4000)列。所有其他列的数据都会正确显示。

有人可以帮助我在这里找到问题以及如何解决它吗?

1 个答案:

答案 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时遇到问题,那么这种方法就是困难的方法。)