在SSIS包中使用OData源预览SharePoint列表时出错

时间:2019-03-14 19:18:49

标签: sharepoint ssis odata sql-server-data-tools ssis-2017

在一个SSIS包中,我试图从SharePoint列表中提取数据。 我正在使用OData源连接管理器。我将服务文档放置在正确的位置。我正在使用一种身份验证类型:Windows身份验证。 当我点击“测试连接”按钮时,我得到“测试连接成功”。

在OData Source Editor中,选择刚配置的连接管理器。我选择“收藏”选项。然后,我从集合中选择列表。 当我点击“预览”按钮时,会弹出以下错误:

  

从有效负载读取了错误。有关更多详细信息,请参见“错误”属性。 (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个我知道没有问题的字段。

我正在使用SSDT2017。SharePoint版本是2013。

有什么想法吗?预先感谢。

1 个答案:

答案 0 :(得分:1)

解决方法

如果在尝试使用ODATA组件连接到Sharepoint时遇到问题,则可以使用SSIS Sharepoint列表适配器,这是由Microsoft SSIS社区(产品团队)完成的项目。

这些组件在Codeplex上针对SSIS 2005和2008发布,然后几年前,该项目被迁移到GitHub并进行了更新以支持SQL Server 2016、2017。

CodePlex项目URL

GitHub项目URL

Sharepoint列表适配器2017版

相关问题


更新1

在搜索时,我发现了有关使用ODATA Source和Sharepoint的以下主题:

在注释中有一个用户(Ravikiran)提到了相同的异常,并且看起来这是一个数据类型问题:

  

为此,我能够通过要求共享点管理员创建一个计算列来解决该问题,该列将引用那些查找列并显示值。计算所得的列将为基本类型varchar,因此可以轻松地通过odata适配器为此提取数据。

还有另一个用户(Angela)提供了另一个解决方案:

  

只是让您知道我已经开始工作了。我安装了Sharepoint列表适配器,并将其添加到我的SSIS包中