Ssis SSI为什么会抱怨“我不知道”;文件末尾有一个部分行";?

Ssis SSI为什么会抱怨“我不知道”;文件末尾有一个部分行";?,ssis,Ssis,我正在使用SSIS中的数据流任务将平面文件导入数据库。该文件非常简单:每行包含三个逗号分隔的值。但是,每当运行此任务时,我都会收到平面文件组件发出的警告: 警告:0x8020200F:文件末尾有一部分行 无论文件大小如何,都会出现此警告:即使文件中只有少量行,经过视觉验证(扩展字符和其他不可见的内容),我仍然会收到它。此外,我在文件的末尾是否有一个空行,或者我只是在没有尾随CR+LF的情况下结束它,这似乎并不重要 如何消除此警告,以便在启用了warnaError的情况下运行软件包 (顺便说一句,

我正在使用SSIS中的数据流任务将平面文件导入数据库。该文件非常简单:每行包含三个逗号分隔的值。但是,每当运行此任务时,我都会收到平面文件组件发出的警告:

警告:0x8020200F:文件末尾有一部分行

无论文件大小如何,都会出现此警告:即使文件中只有少量行,经过视觉验证(扩展字符和其他不可见的内容),我仍然会收到它。此外,我在文件的末尾是否有一个空行,或者我只是在没有尾随CR+LF的情况下结束它,这似乎并不重要

如何消除此警告,以便在启用了warnaError的情况下运行软件包


(顺便说一句,似乎其他人也有类似的问题,尽管这不是一个很大的问题。)

如果你遇到这个问题,我发现三件事可以尝试。在三种情况中,至少有两种情况下,SSIS忽略了我输入文件的行,只显示了上面的警告。因此,我不建议忽略此警告

步骤1:验证平面文件是否有效 当您的输入文件无效时,将出现此错误。如果您的输入文件有数百万行,这可能特别难以检测,就像我的一样,但发现文件格式冲突是至关重要的,因为SSIS会很高兴地向您发出此警告,并在不导入违规行或在某些情况下导入违规行后的行的情况下继续前进。发现源文件有问题的最简单方法是检查成功导入的行数。如果它与你在平面文件中所期望的数字大不相同,那么某个地方的某个地方可能出了问题。 步骤2:在末端尝试虚拟线(仅限固定宽度) 如果您使用的是固定宽度格式的输入文件,Microsoft可能会提供一些帮助。基本上,他们建议您在文件末尾添加一个虚拟行

我没有使用固定宽度的文件,所以我不能说这项技术有多有用

步骤3:关闭非文本的文本限定 这是一个棘手的问题,因为我相信TextQualified属性默认为True。如果输入文件使用非文本字段(整数等),则必须告诉SSIS不应将这些列限定为文本。基本上,您的输入文件将无效,尽管看起来完全有效

TextQualified是平面文件连接管理器中列的属性

要更改它,请打开连接管理器,单击“高级”,然后单击非文本列。确保TextQualified属性设置为False。您需要对所有非文本列执行此操作


如果文件中某行的字节宽度已知,您可以反复检查文件的总字节大小是否可以除以预期的行大小,以获得一个漂亮的整数行计数(而不是小数)

从源代码中了解预期的记录数也很有帮助,但如果没有,则在加载文件时,至少可以根据行数的计算结果重新检查结果加载的表记录数


当源平面文本文件丢失时,我经常看到此错误,它是文件末尾的最后一个。\r\n在Windows 64位上运行是完美的。这导致没有丢失行,但我在Windows 2008上运行时丢失了最后一行

我的解决办法是 1.在Windows 2008上的BIDs中打开SSI。 2.打开文件连接管理器,确保文本限定符设置为 3.重建它

在Windows7和Windows2008中都可以正常工作