Ошибка предварительного просмотра списка SharePoint с источником OData в пакете служб SSIS - PullRequest
1 голос
/ 14 марта 2019

В пакете служб 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)

Неважно, какую коллекцию я выберу, та же ошибка.Я даже пытался ограничить данные с помощью параметра запроса одним полем, которое, как я знаю, не вызывает проблем.

Я использую SSDT 2017. Версия SharePoint - 2013.

Есть идеи?Заранее спасибо.

1 Ответ

1 голос
/ 14 марта 2019

Обход

Если вы сталкиваетесь с проблемами при попытке подключиться к Sharepoint с использованием компонентов ODATA, вы можете использовать SSIS Sharepoint List Adapter, который является проектом, выполненным сообществом Microsoft SSIS (команда продукта).

Эти компоненты были опубликованы в Codeplex для SSIS 2005 и 2008, затем несколько лет назад проект был перенесен на GitHub и обновлен для поддержки SQL Server 2016,2017.

URL проекта CodePlex

URL проекта GitHub

Адаптер списка Sharepoint 2017 года выпуска

Смежный вопрос


Обновление 1

Во время поиска я нашел следующую тему об использовании ODATA Source и Sharepoint:

В комментариях есть пользователь (Ravikiran) , который упомянул то же исключение, и похоже, что это была проблема типа данных:

Для этого я смог решить эту проблему, попросив администратора sharepoint создать вычисляемый столбец, который будет ссылаться на этот столбец поиска и отображать значение. Этот вычисляемый столбец будет иметь базовый тип varchar, поэтому легко получить данные для этого через адаптер odata.

Также другой пользователь (Анжела) дал другое решение:

Просто, чтобы вы знали, что у меня все работает. Я установил адаптеры списка Sharepoint, которые я добавил в пакет служб SSIS

...