SSIS截断错误仅在控制流中

时间:2015-04-16 19:52:39

标签: sql-server csv ssis ssis-2012

我有一个包给我​​一个非常令人困惑的“文本被截断或一个或多个字符在目标代码页中没有匹配”错误但只有当我在控制流中运行完整包时,而不是在我运行时任务本身。

第一项任务采用CSV文件并将它们合并为一个文件。下一个任务读取上一个文件的输出并开始处理记录。真正奇怪的是在第二步中在平面文件源中抛出了截断错误。这是完全相同的平面文件源,它是上一步中的目标。

如果存在截断错误,那么尝试创建该文件的上一步不会抛出该错误吗?由于第一步创建了文件而没有截断,为什么我不能在下一个任务中读取同一个文件?

注意 - 只有使这个包与我工作的其他包不同的是我正在处理特殊字符并使用代码页65001 UTF-8来捕获具有特殊字符的字段。我的其他软件包都引用了代码页为1252的平面文件连接管理器。

control flow showing both steps

data flow showing error with flat file source

1 个答案:

答案 0 :(得分:0)

问题是由foreach循环和使用ColumnNamesInFirstDataRow表达式引起的,其中我有公式“@ [User :: count_raw_input_rows]< 0”。我有一个初始化为-1的变量,我将它分配给平面文件的ColumnNamesInFirstDataRow。在循环中,我在每次读取CSV文件时使用行计数器更新变量。这将标头置于第一次(-1),但随后避免重复所有其他CSV文件。当我退出循环并尝试读取输入文件时,它将标题视为数据并将其炸毁。我只是在我的最后一个包中避免了这个,因为我没有像使用这个包那样收紧平面文件的列定义。谢谢你的帮助。