我有一个复杂的查询,我想用作SSIS包中的源。我创建了我的OLE DB源,将访问模式指定为SQL,并将我的查询粘贴到命令文本框中。当我点击预览时,样本数据会回来,一切看起来都不错。
但是,当我尝试运行该软件包时,我会回到“外部列与数据源列不同步”,并且需要从外部列中删除一堆“外部列'xxx'”错误消息。请注意,在设计模式下,“错误列表”选项卡中没有条目。
进行我的研究我发现外部,输出和错误列是使用错误的数据类型自动定义的。一些明显的整数列被定义为字符串,而其他整数列被设置为unicode字符串。
我尝试通过高级编辑器手动修复它们,但似乎无法更改错误列。但是,如果我修复外部和输出源列,我会得到关于不同步的消息...你想要修复它吗?我点击是,然后把它放回字符串......
感谢您的任何见解。
答案 0 :(得分:2)
您遇到的问题可以通过以下几种方法之一解决。
首先,如果您尝试使用高级编辑器进行更改(我建议不要这样做,因为维护人员很难看到您做了什么),您必须更改外部和输出源列的设置。同步。单击“是”时的“修复”是两者之间的不匹配。
其次,您可以将它们全部保留为字符串,并使用数据转换组件转换为您需要的类型。这对未来的维护者来说更容易。
我更喜欢使用oracle sql语句来设置pl / sql中我需要的类型,以便SSIS创建具有正确类型的字段。这允许定义是明确的,因此维护者可以看到做了什么。为此,我使用sql查询从目标表的结构构建我的oracle select语句(在我为此构建的项目中,我们将所有数据/结构完整地从Oracle引入到临时Sql Server机器中,然后再应用转换。)
https://docs.google.com/leaf?id=0B4aVrSS2ke2IZGVkYWJkOWYtY2Y3Yy00MDI5LTkyMDctYjgwMGY2YzZiODRm&hl=en