我最近将一个SSIS项目从2008年改为2012年。这是一个在夜间自动运行的项目,并且已经过了2年的大部分时间(如2008版)。在过去的几周里,我看到一些文件失败了,我很难搞清楚原因。我害怕了:
[SSIS.Pipeline]错误:SSIS错误代码DTS_E_PRIMEOUTPUTFAILED。 Flat File Source上的PrimeOutput方法返回错误代码0xC0202092。当管道引擎调用PrimeOutput()时,组件返回失败代码。失败代码的含义由组件定义,但错误是致命的,管道停止执行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
而且:
[Flat File Source [20]]错误:找不到“NOTE_TEXT”列的列分隔符。
我挖掘数据,找到了这条线,并通过反复试验证实这是导致问题的双引号;拿出来,工作得很好。重新加入,再次破产。
从那以后我经历了不少帖子,令我惊讶的是,显然它应该在2008年没有工作,现在应该在2012年工作:
https://msdn.microsoft.com/en-us/library/ms140266%28v=sql.110%29.aspx
现在支持使用限定符来将限定符字符嵌入到限定字符串中。文本限定符的双实例被解释为该字符串的文字单个实例。例如,如果文本限定符是单引号并且输入数据是'abc','def','g'hi',则输出数据是abc,def,g'hi。
http://www.proactivespeaks.com/2012/06/22/my-5-favorite-sql-2012-ssis-features-so-far/
这是另一个在SQL 2012中已经解决的痛苦过程。从历史上看,如果平面文件有文本限定符,并且文本限定符字符在数据中,则SSIS不会正确解析它(示例数据行:' 123' , '456', '78'9')。现在,SSIS可以轻松处理这种情况。
我在SQL仓库中查看了带有双引号的注释示例,并发现了多年来传播的一些示例。这肯定是用于工作...一直到转换2012包接管的程度。
我检查了包属性/变量,数据流属性/变量,平面文件连接属性......它们都完全匹配:
我想快速修复一下,我只会将TextQualified标记为False,然后使用派生列修剪第一个和最后一个字符(引号),但这很荒谬......有必要是我缺少的东西。
任何帮助,或任何其他要检查的事情都将非常感激。