在SSIS包中,我正在尝试从SharePoint列表中提取数据。我正在使用OData源连接管理器。我输入了正确的服务文档位置。我正在使用身份验证类型:Windows身份验证。当我点击“测试连接”按钮时,我得到“测试连接成功”。
在OData源代码编辑器中,我选择刚刚配置的连接管理器。我选择了“收藏”选项。然后我从集合中选择列表。当我点击“预览”按钮时弹出以下错误:
从有效负载读取错误。有关详细信息,请参阅“错误”属性。 (Microsoft.Data.OData)
这是扩展的错误:
===================================
An error occured when reading the OData feed. (Microsoft.Data.DataFeedClient)
------------------------------
Program Location:
at Microsoft.Data.DataFeedClient.DataFeedODataReaderV3.InterceptODataException[T](Func`1 function)
at Microsoft.Data.DataFeedClient.DataFeedODataReaderV3.ReadNextODataEntry()
at Microsoft.Data.DataFeedClient.DataFeedODataReaderV3.ReadNextRow(IRow reuseRow)
at Microsoft.Data.DataFeedClient.BufferedRowsReader.FetchNextRow(IRow reuseRow)
at Microsoft.Data.DataFeedClient.BufferedRowsReader.MoveNext()
at Microsoft.Data.DataFeedClient.DataFeedDataReader.InternalMoveNext()
at Microsoft.Data.DataFeedClient.DataFeedDataReader.Read()
at Microsoft.DataTransformationServices.DataFlowUI.ODataConnectionPage.PreviewButton_Click(Object sender, EventArgs e)
===================================
An error was read from the payload. See the 'Error' property for more details. (Microsoft.Data.OData)
------------------------------
Program Location:
at Microsoft.Data.OData.Atom.BufferingXmlReader.ReadNextAndCheckForInStreamError()
at Microsoft.Data.OData.Atom.BufferingXmlReader.ReadInternal(Boolean ignoreInStreamErrors)
at Microsoft.Data.OData.Atom.BufferingXmlReader.Read()
at System.Xml.XmlReader.SkipSubtree()
at System.Xml.XmlReader.Skip()
at Microsoft.Data.OData.Atom.ODataAtomEntryAndFeedDeserializer.ReadFeedContent(IODataAtomReaderFeedState feedState, Boolean isExpandedLinkContent)
at Microsoft.Data.OData.Atom.ODataAtomReader.ReadAtEntryEndImplementation()
at Microsoft.Data.OData.ODataReaderCore.ReadImplementation()
at Microsoft.Data.OData.ODataReaderCore.ReadSynchronously()
at Microsoft.Data.OData.ODataReaderCore.InterceptException[T](Func`1 action)
at Microsoft.Data.OData.ODataReaderCore.Read()
at Microsoft.Data.DataFeedClient.DataFeedODataReaderV3.ReadNextODataEntryInternal()
at Microsoft.Data.DataFeedClient.DataFeedODataReaderV3.<ReadNextODataEntry>b__5()
at Microsoft.Data.DataFeedClient.DataFeedODataReaderV3.InterceptODataException[T](Func`1 function)
我选择什么样的集合并不重要,同样的错误。我甚至试图用查询选项将数据限制为1个字段我知道没有问题。
我正在使用SSDT 2017.SharePoint版本是2013。
有任何想法吗?提前致谢。
如果在尝试使用ODATA组件连接到Sharepoint时遇到问题,可以使用SSIS Sharepoint List Adapter,这是Microsoft SSIS社区(产品团队)完成的项目。
这些组件发布在Codeplex for SSIS 2005和2008上,几年前,该项目已迁移到GitHub并更新以支持SQL Server 2016,2017。
CodePlex项目URL
GitHub项目URL
Sharepoint List适配器2017版本
相关问题
在搜索时我发现了以下有关使用ODATA Source和Sharepoint的主题:
在评论中有一个用户(Ravikiran)提到了相同的异常,看起来它是一个数据类型问题:
为此我能够通过要求sharepoint管理员创建一个计算列来解决它,该列将引用那些查找列并显示该值。此计算列将是基本类型varchar,因此很容易通过odata适配器为此提取数据。
另一个用户(Angela)给出了另一个解决方案:
只是为了让你知道我让它运转了。我安装了Sharepoint List Adapters,我把它添加到了我的SSIS包中