1

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

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

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

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

感谢您的任何见解。

4

1 回答 1

1

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

首先,如果您尝试使用高级编辑器来更改此设置(我不建议这样做,因为维护人员很难看到您所做的事情),您必须同步更改外部和输出源列的设置。单击“是”时,“修复”是两者之间的不匹配。

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

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

于 2015-05-30T06:00:45.753 回答