2014-09-26 69 views
0

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

我们在生产服务器上安装了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

闻起来很像你有不同版本的驱动程序安装/配置。很久以前,与MySQL驱动程序出现类似的问题。版本X.Y.Z.13是针对开发的。服务器获得了驱动程序版本X.Y.Z.14和繁荣,无效的元数据。 – billinkc 2014-09-26 15:51:42

+0

对不起,如果我花时间回答,但你是对的,这是问题所在。非常感谢! – user2343647 2014-09-29 17:46:57

回答

1

你很可能运行到/安装的驱动程序在不同的机器配置的差异。

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

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