SSIS 中的 Oracle 查询定义了错误的数据类型

Oracle query in SSIS defines wrong data types

我有一个有点复杂的查询,我想将其用作 SSIS 包中的源。我创建了我的 OLE DB 源,将访问模式指定为 SQL,并将我的查询粘贴到命令文本框中。当我单击“预览”时,示例数据返回并且一切看起来都不错。

但是,当我尝试 运行 包时,我得到了 "external columns are out of sync with data source columns" 和一堆 "external column 'xxx' needs to be removed from the external columns" 错误消息。请注意,在设计模式下,“错误列表”选项卡中没有任何条目。

在我的研究中,我发现外部列、输出列和错误列被自动定义为错误的数据类型。一些明显的整数列被定义为字符串,而其他列被设置为 unicode 字符串。

我尝试通过高级编辑器手动修复它们,但您似乎无法更改错误列。但是,如果我修复了外部和输出源列,我会收到有关不同步的消息...您要修复它吗?我单击“是”,它会返回字符串...

感谢您的任何见解。

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

首先,如果您尝试使用高级编辑器来更改它(我不建议这样做,因为维护人员很难看到您所做的事情),您必须同时更改外部和输出源的设置列同步。点yes的时候'Fixing'就是两者不匹配

其次,您可以将它们全部保留为字符串,并使用数据转换组件转换为您需要的类型。这对未来的维护者来说更容易。

我更喜欢使用 oracle sql 语句来设置我在 pl/sql 中需要的类型,以便 SSIS 创建具有正确类型的字段。这允许定义是明确的,以便维护者可以看到做了什么。为此,我使用 sql 查询从目标 table 的结构构建我的 oracle select 语句(在我为此构建的项目中,我们带来了所有 data/structure 在应用转换之前从 Oracle 完整地转换为暂存 Sql 服务器计算机。) https://docs.google.com/leaf?id=0B4aVrSS2ke2IZGVkYWJkOWYtY2Y3Yy00MDI5LTkyMDctYjgwMGY2YzZiODRm&hl=en