带有Oracle OLE DB源的SSIS(VS2008)

时间:2014-09-26 15:33:23

标签: oracle ssis

我有一个奇怪的问题,在DEV环境中一切都很好但在PROD SSIS中报告有关从unicode转换为非unicode的错误。此错误发生在OLE DB源任务级别。所以,我甚至没有机会使用派生列来执行转换。

我们在生产服务器上安装了BIDS,并且该任务被标记为错误。当我尝试打开属性时,它告诉我元数据与DTSX文件中的元数据不同。当我接受要求自动更正时,所有错误列输入类型(外部和输出列)的类型都从DT_WSTR切换到DT_STR

所涉及的表的描述在DEV和PROD中是相同的(列的相同类型)。如果我查询字符集,它们在两种环境中都是相同的。

供您参考,以下是查询:

SELECT * 
FROM v$nls_parameters 
where parameter 
       like '%CHARACTERSET'

返回:

NLS_CHARACTERSET                   WE8MSWIN1252
NLS_NCHAR_CHARACTERSET             AL16UTF16

两种环境。

有什么想法解决这个问题吗?

谢谢你, 米歇尔

1 个答案:

答案 0 :(得分:1)

您可能会遇到在不同计算机上安装/配置的驱动程序的差异。

我很久以前就遇到过与MySQL驱动程序类似的问题。版本X.Y.Z.13是针对。服务器获得了驱动程序版本X.Y.Z.14和繁荣,无效的元数据。

您需要检查元数据的Dev和prod服务器版本,并确定哪一个适合您。在我的例子中,Dev驱动程序生成varchar(非unicode)字符串并与目标系统对齐,而他们在prod中安装的较新驱动程序推断它们应该是nvarchar(unicode)字符串。将nvarchar重写为varchar或更改表超出了项目允许的时间范围以及数据管理团队用于创建表的疯狂规则。