2012-10-17 55 views
1

我试图从我的数据库加载数据到一个标准模板的excel文件。该软件包已准备好并且正在运行,并引发了一些验证警告,指出可能会发生截断,因为我的模板的字段比我匹配的DB字段的字段略小。SSIS包没有填充任何结果

但是,没有数据填充到我的Excel表单中。 没有错误报告,当我点击我的OLE DB源的预览时,它显示了结果行。这些都没有被填充到我的Excel表中。

+0

当它调试时,Excel目标任务变红,而其他一切似乎都很好。 0错误,2截断警告 – Vivek

+0

我的数据缺陷有一个数据库源,数据转换和Excel目标...前两个罚款......这是最终的Excel目标,抛出2个警告,但仍然没有填充任何数据 – Vivek

+0

[Excel目标[22]]错误:SSIS错误代码DTS_E_OLEDBERROR。发生了OLE DB错误。错误代码:0x80040E21。 [Excel目标[22]]错误:无法创建OLE DB访问器。验证列元数据是否有效。 [SSIS.Pipeline]错误:组件“Excel Destination”(22)未执行预执行阶段并返回错误代码0xC0202025。 – Vivek

回答

0

夫妇的问题,这可能会导致一个答案:

  1. 是否检查数据实际上是在运行时通过SSIS包通过呢?
  2. 你仔细检查了你的映射吗?
  3. 尝试包内的转换,所以你不必截断问题

做,如果你添加你正在运行什么,我或许可以给你一个更好的答案一些更多的细节。

编辑:考虑你在你的评论中写了什么,我敢肯定地尝试第三种选择。让我们知道这是否解决不了问题。

+0

我已经在源和目标之间添加了数据转换步骤。它将我的db字符串列转换为unicode字符串,因此在写入我的目标excel时,我不会遇到任何转换问题 – Vivek

0

你不提供很多信息。在你的源代码和你的excel目标之间添加一个数据视图来查看数据是否通过。做到这一点,只需双击数据流路径,选择数据视图,然后添加一个网格。

运行您的应用程序。如果您看到数据,请提供更多详细信息,以便我们为您提供帮助

5

您应该首先确保数据通过管道传输。在将源任务连接到目标任务的箭头中(我假设你之间没有任何步骤),双击并打开数据流路径编辑器。单击数据查看器,然后单击添加,然后单击确定。这将让你看到什么是通过管道。

enter image description here

要考虑的事情与Excel是喜欢Unicode数据类型,以非Unicode。很可能您的数据库归类为非Unicode,因此您可能必须转换数据转换任务中的值。

enter image description here

enter image description here

此外,您可能需要强制包32位运行时执行。 VS应用程序在32位环境下开发,因此您可以看到的驱动程序是32位。如果没有64位等价物,当您尝试运行包时它会中断。右键单击您的项目,然后单击“属性”,然后在“调试”菜单下,您需要将设置Run64BitRuntime更改为FALSE。

enter image description here

0

只是作为一个辅助为别人运行到这一点 - 我也有类似的问题,靠墙打我的头很长一段时间我才发现了事情的原委。我的导出文件将数据写入文件,但是因为我使用的是模板文件作为目标文件,并且该模板文件之前的数据已被删除,所以该过程会在之前使用的行之后附加数据。因此,例如,我写了三行数据,但数据直到344行才开始。

解决方案是选择我的模板文件中的整个电子表格,并删除它的每一个位,以便我有一个完全干净的工作表开始。然后我将我的标题行添加到干净的表单中并保存。然后我运行了数据流任务,并且... ta-daa !!!完美出口!

希望这会帮助一些在未来遇到同样问题的可怜的灵魂!