我有一个带有foreach循环的SSIS包。 foreach循环并读取文件。文件名放在Variable User :: FileName(索引0)中。
我的数据流任务只是一个XML源和Ole DB目的地。
User :: Filename通过" XML文件从变量"
传递给XML源我使用内联架构,这是有效的(afaiks)。
运行包时,出现此错误:
[XML Source [50]]错误:System.Collections.Generic.KeyNotFoundException:De gegeven sleutel是het woordenboek中的niet aanwezig。 bij System.Collections.Generic.Dictionary`2.get_Item(TKey key) bij Microsoft.SqlServer.Dts.Pipeline.DtsDataTableCollection.AssociateTablesWithBuffers(IDTSOutputCollection100输出,IDTSBufferManager100 bufferManager,Int32 localeID,DataSet dataSet) bij Microsoft.SqlServer.Dts.Pipeline.DtsDataTableCollection..ctor(XmlSourceAdapter xmlSourceAdapter,IDTSOutputCollection100输出,Int32 localeID,DataSet数据集,IDTSBufferManager100 bufferManager) bij Microsoft.SqlServer.Dts.Pipeline.XmlSourceAdapter.PreExecute() bij Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPreExecute(IDTSManagedComponentWrapper100 wrapper)
我的档案中没有TKey。
当我使用xsd运行此包时,不会生成错误,但不会读取任何行。
删除foreach容器时,只需指向一个带有"内联架构的文件"读取所有行并且不生成错误。但是,我不想为每个文件制作数据流......
我不知所措。有人可以帮我解决一下吗?一种调试此错误的方法?搜索的一般方向?
Visual Studio 2010。
答案 0 :(得分:0)
您的数据流任务期望列TKey
存在于您的XML源文件中。
您循环的至少一个文件不包含此列。这就是你得到错误的原因。既然你说文件都是一样的,那么大概没有这个文件有这个列。
在这种情况下,一种解决方案是从数据流预期的列中取出TKey
列。