带有Oracle OLE DB源的SSIS(VS2008)

带有Oracle OLE DB源的SSIS(VS2008),oracle,ssis,Oracle,Ssis,我有一个奇怪的问题,在DEV环境中一切正常,但在PROD中,SSIS报告了一个关于从unicode转换到非unicode的错误。此错误发生在OLE DB源任务级别。因此,我甚至没有机会使用派生列来执行转换 我们在生产服务器上安装了BIDS,任务被标记为错误。当我试图打开属性时,它告诉我元数据与DTSX文件中的不同。当我接受自动更正的提议时,所有有故障的列输入类型(外部列和输出列)的类型都从DT_WSTR切换到DT_STR DEV和PROD中涉及的表的描述是相同的(列的类型相同)。如果我查询字符集

我有一个奇怪的问题,在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
在这两个环境中

有办法解决这个问题吗

谢谢,,
Michel

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

很久以前,我在MySQL驱动程序方面遇到了类似的问题。版本X.Y.Z.13是针对以下内容开发的。服务器获取了驱动程序版本X.Y.Z.14和boom,元数据无效


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

闻起来很像您安装/配置了不同版本的驱动程序。很久以前,MySQL驱动程序也遇到了类似的问题。版本X.Y.Z.13是针对以下内容开发的。服务器获得了驱动程序版本X.Y.Z.14和boom,元数据无效。很抱歉,如果我花时间回答,但你是对的,这就是问题所在。谢谢!