修复:如果在平面文件源中使用多字符列分隔符,则尝试运行 SSIS 2005 包时可能会同时发生 0xC02020A1、0xC020902A、0xC0202092 和 0xC0047038 错误

请考虑以下情形:

  • 在 Business Intelligence Development Studio (BIDS) 中创建 SQL Server 2005 Integration Services (SSIS) 包。
  • 使用平面文件源在数据流任务中从文本文件读取数据。
  • 在平面文件源中使用多字符列分隔符。 例如,多字符列分隔符是由三个波浪号字符组成的字符串, (~~~) 。
  • 文本文件包含大量数据。 例如,文本文件包含超过 20,000 条记录。
  • 您运行 SSIS 包。

在这种情况下,SSIS 包可能会失败。 此外,你还会收到以下错误消息:

注意

  • 错误:0xC02020A1 at 数据流 Task, Flat File Source [1]:数据转换失败。 “column_name>”列<的数据转换返回了状态值 4 和状态文本“文本被截断或目标代码页中一个或多个字符不匹配。”。
  • 错误:数据流 Task, Flat File Source [1] 的0xC020902A:“输出列 ”<column_name>“ (199) ”失败,因为发生了截断,并且“输出列 ”<column_name>“ (199) ”上的截断行处置指定截断失败。 指定组件的指定对象上发生截断错误。
  • 错误:数据流任务,平面文件源 [1] 处0xC0202092:处理数据行 <row_number> 上的文件“<path_of_the_flat_file>”时发生错误。
  • 错误:0xC0047038数据流任务,SSIS。管道:SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。 组件“平面文件源” (1 上的 PrimeOutput 方法) 返回错误代码 0xC0202092。 当名为 PrimeOutput 的管道引擎 () 时,组件返回故障代码。 故障代码的含义由组件定义,但错误是致命的,并且管道停止执行。 在此之前可能会发布错误消息,其中包含有关失败的更多信息。

    

症状

出现此问题的原因是平面文件分析器的输入缓冲区错误地将多字符分隔符划分为两个部分。

原因

Service Pack 信息

要解决此问题,请获取 SQL Server 2005 的最新 Service Pack。

有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

913089 如何获取最新的 SQL Server 2005 Service Pack

解决方法

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。

状态