【问题标题】:SSIS mysterious errorSSIS神秘错误
【发布时间】:2014-06-07 15:40:20
【问题描述】:

在将平面文件转换为数据库表时,我只收到了这 2 个错误。数据流似乎适用于具有相同布局的其他平面文件,所以我不明白这些错误可能来自哪里。

[Flat File Source [204]] Error: An error occurred while skipping data rows.

[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED.  
The PrimeOutput method on Flat File Source returned error code 0xC0202091.  
The component returned a failure code when the pipeline engine called 
PrimeOutput(). The meaning of the failure code is defined by the component, 
but the error is fatal and the pipeline stopped executing.  There may be 
error messages posted before this with more information about the failure.

【问题讨论】:

  • 什么类型的文件(csv、txt、bin)?什么是分隔符?如果您在调试期间观察 OUTPUT 窗口,SSIS 应该能够告诉您它阻塞在哪一行。
  • 您是否在文件开头跳过了标题行或任何数量的其他行?
  • 我会尝试捕获它失败的行。该错误将向我表明文件中存在错误、缺失或额外的分隔符,并且它违反了格式。其他可能性是不可见字符(unicode 有时会这样做)或错误的行终止符。
  • 输出窗格中应该有更多错误消息。您能否仔细检查一下您是否无意中错过了其中之一?
  • 文件是否小到可以手动检查?有时,您会在分隔符的位置看到一个奇数字符或一长串空格。

标签: sql-server ssis flat-file


【解决方案1】:

啊,我找到了...文件较旧并且标题中缺少一些列.........

【讨论】:

  • 谢谢!这解决了我的问题!错误消息相当具有误导性。
【解决方案2】:

为了其他有此错误的人的利益,我遇到了同样的问题(跳过数据行时发生错误),但这不是由于文件中的引号、分隔符或限定符造成的。我也没有跳过任何标题或数据行。所以这是一个非常烦人的错误消息,它无法深入了解实际问题。

无论如何,我可以通过在平面文件源编辑器的连接管理器选项卡中选中“将源中的空值保留为数据流中的空值”来使其正常工作。

【讨论】:

    【解决方案3】:

    我能够通过将标题行跳过计数设置为零 (0) 来解决它。

    Flat File Connection Manager --> Header rows to skip: 0
    

    【讨论】:

      【解决方案4】:

      我在传输包含 SQL 几何列的表时遇到了这个问题。

      【讨论】:

        【解决方案5】:

        我同意上面的答案“文件较旧并且标题中缺少一些列”(我赞成这个答案)。我刚刚遇到了同样的错误,经过调查,这是因为与平面文件连接管理器预期的列相比,外部平面文件缺少一列。本质上,SSIS 错误“跳过数据行时发生错误” 应解释为意思是 “检查平面文件源中的实际列是否与其连接管理器中定义的列匹配”。

        【讨论】:

          【解决方案6】:
          1. 您可能需要检查平面源文件中是否所有必需的列都可用。
          2. 在平面文件连接管理器中检查“要跳过的标题行数”,并根据源文件内容确认它是正确的。

          【讨论】:

            【解决方案7】:

            收到相同的错误消息后,我设法纠正了问题。我的分析上升了2个问题:

            第一个问题

            HEADER ROWS 选项允许管理标记结构的行的标题。如果您设置例如 1,它将丢弃该行的第一列。返回的错误来自不同步输出列 - 您的列输出比文件中的列多,因为您已删除第一列。将 HEADER ROWS 重置为 0 并将数据行设置为 1 以在保留 0 时删除标题

            第二个问题

            如果您在第一行使用列名选项,它可以让您快速创建列,但在执行数据流时会引发问题。继续使用数据行跳过 1 并使用高级选项重命名列及其类型

            【讨论】:

            • 我按照你的建议做了,但没有解决。我在 SQL Server 2019 上通过 VS 2019 运行 SSIS(基本上是撰写本文时的所有最新更新)。底线是:如果您需要在所有当前列序列的末尾创建 1 个新列,那么 SSIS 不知道如何处理跳过行设置。它基本上是微软的一个纯粹的烂摊子!我碰巧有 250 多个列来处理 1,000 多个文件。所以我无法手动编辑任何东西。需要弄清楚如何重新注入列标题名称。噩梦!等一下!我的修复突然停止工作!
            • SSIS 确实是雷德蒙德有史以来最大的垃圾。
            【解决方案8】:

            我在 SSIS 项目中遇到了相同的错误消息。问题在于平面文件源的连接。只是重新创建连接对我有用。

            【讨论】:

              【解决方案9】:

              我的标题行后面有一个空白行。我说过跳过一个数据行,但这显然只是在预览数据时。 我用标题行创建了数据源,然后,一旦创建了数据源,我说跳过文件的前 2 行(标题跳过 2)。这样就解决了问题。

              【讨论】:

                猜你喜欢
                • 2015-03-13
                • 2017-04-20
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-05-10
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多