我正在开发一个SSIS包,它将特定文件的内容复制到数据库中。在这个包中,我大量使用了foreach容器。今天我遇到了一个奇怪的行为,并没有任何线索错误。在其中一个容器中我过滤了" VBFA * .txt"。但由于某种原因,容器也会被触发一个名为" VBAP.D2014211.T204008397.R000564.txt"的文件。当我更改该文件名的任何部分时,它不再触发容器。此外,还有很多其他文件以" VBAP"开头。并且不要触发容器。这种行为可能是什么原因?
以下是枚举器实现:
<DTS:ForEachEnumerator>
<DTS:Property DTS:Name="ObjectName">{6E07E755-700D-4D7D-9550-E08DA5B81264}
</DTS:Property>
<DTS:Property DTS:Name="DTSID">
{f0ceed84-f95c-404c-8794-2eec0155d1a6}</DTS:Property>
<DTS:Property DTS:Name="Description"></DTS:Property>
<DTS:Property DTS:Name="CreationName">DTS.ForEachFileEnumerator.2</DTS:Property>
<DTS:ObjectData>
<ForEachFileEnumeratorProperties>
<FEFEProperty Folder="\\desoswi0204vs\etldata\transfers\out\DP"/>
<FEFEProperty FileSpec="VBFA*.txt"/>
<FEFEProperty FileNameRetrievalType="0"/>
<FEFEProperty Recurse="0"/>
</ForEachFileEnumeratorProperties>
</DTS:ObjectData>
</DTS:ForEachEnumerator>
答案 0 :(得分:1)
我用dir / x检查了路径内容,我的文件的短名称是错误的。对于文件“VBAP.D2014211.T204008397.R000564.txt”,短名称为“VBFA08~1.TXT”。完整的结果是:
01.08.2014 11:02 1.067.169 VBFA08~1.TXT VBAP.D2014211.T204008397.R000564.txt
我绝对不知道,这里发生了什么以及如何阻止它。这违反了我发现的有关短文件名创建的所有规则。我把这个作为其他所有人的答案留给了这个行为,这也是c#Directory.GetFiles的案例