2015-05-30 37 views
1

我有一个复杂的查询,我想用它作为SSIS包中的源。我创建我的OLE DB源,将访问模式指定为SQL,并将我的查询粘贴到命令文本框中。当我点击预览时,样本数据会返回,并且一切都很好。SSIS中的Oracle查询定义了错误的数据类型

但是,当我尝试运行该软件包时,我收到“外部列与数据源列不同步”以及“外部列'xxx'需要从外部列删除”错误消息。请注意,在设计模式下,“错误列表”选项卡中没有条目。

做我的研究我看到外部,输出和错误列正在自动定义与错误的数据类型。一些明显的整数列被定义为字符串,而另一些被设置为unicode字符串。

我试图通过高级编辑器手动修复它们,但似乎无法更改错误列。但是,如果我修复外部和输出源列,我会收到有关不同步的消息...您是否希望修复它?我点击是,它把它放回到字符串...

感谢您的任何见解。

+0

[Oracle查询作为SSIS中的源定义错误的数据类型]的可能重复(http://stackoverflow.com/questions/2209056/oracle-query-as-source-in-ssis-defines-wrong - 数据类型) –

回答

1

您遇到的问题可以通过几种方法之一来解决。

首先,如果您尝试使用高级编辑器来更改此设置(我建议不要这样做,因为维护人员很难看到您所做的操作),您必须更改外部和输出源列的设置同步中。单击“是”时,“修复”是两者之间的不匹配。其次,您可以将它们全部保留为字符串,然后使用数据转换组件转换为您需要的类型。这对未来的维护者来说更容易。

我更喜欢使用一个oracle sql语句来设置我在pl/sql中需要的类型,以便SSIS创建具有正确类型的字段。这使得定义变得明确,维护人员可以看到完成了什么。为此,我使用sql查询从目标表的结构中构建我的oracle select语句(在我构建的这个项目中,我们将所有数据/结构从Oracle保持原样转换为Sql Server计算机,然后再应用转换) https://docs.google.com/leaf?id=0B4aVrSS2ke2IZGVkYWJkOWYtY2Y3Yy00MDI5LTkyMDctYjgwMGY2YzZiODRm&hl=en