Sharepoint ist ein hervorragendes Tool, Daten zu erfassen oder Dokumente abzulegen. Eine Anforderung in diesem Zusammenhang ist immer wieder Daten in den Sharepoint zu schreiben oder von dort zu konsumieren.

Out-of-The-Box bietet SSIS keine entsprechenden Komponenten, um dies zu bewerkstelligen.

Lesen:

  • [Codeplex] Sharepoint List (Source)
  • ODATA Source
  • C#/VB.NET
  • powershell
  • Drittanbieter
  • Power Query (Sharepoint)
  • Power Query (ODATA)

Schreiben:

  • [Codeplex] Sharepoint List (Destination)
  • C#/VB.NET
  • powershell
  • Drittanbieter

Sharepoint List

Lange Zeit hat Microsoft auf Codeplex eine Lösung angeboten. (siehe Extracting and Loading SharePoint Data in SQL Server Integration Services). Auch wenn in vielen Foren behauptet wird, dass es ab 2014 keine Version mehr gäbe, so stimmt das nicht. Der entsprechende Artikel wurde nur nicht mehr aktualisiert. Hier finden Sie eine Version, die mit SSIS (Visual Studio, SQL) zusammenarbeitet. Eine Lösung, die ich immer wieder implementiert sehe, ist die Verwendung eines SSIS 2017 Paketes, dass auf einen SQL 2019 Agent ausgeführt wird.

ODATA Source

Wenn man eine Sharepoint Liste nur konsumieren möchte, dass geht das auch mit Board-Mittel über die ODATA Komponente. [hier]

Will man die Daten irgendwie einschränken, kann man dies über Url-Filter machen.

odata query options

Power Query (Sharepoint List & ODATA)

Neben der ODATA SSIS Komponente gibt es mit Power Query für SSIS eine weitere Möglichkeit Daten von Sharepoint zu konsumieren.

C# (Destination)

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
     string siteUrl = "SPSite";
     ClientContext clientContext = new ClientContext(siteUrl);
     ClientContext.Credentials = { Einloggen }
     SP.List oList = clientContext.Web.Lists.GetByTitle("NewList");
     ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();
     ListItem oListItem = oList.AddItem(itemCreateInfo);
     oListItem["Title"] = Row.ProductName;
     oListItem.Update();
     ClientContext.ExecuteQuery();
}

Weiterführende Informationen

Powershell (Destination)

Drittanbieter-Tools (Source & Destination)

Was ist aber das Beste?

Welche dieser Ansätze die beste ist, ist schwer zu sagen. Die (Codeplex) Sharepoint Lösung würde ich nicht mehr verwenden, einerseits da sie mit 2019 nicht mehr zusammenarbeitet und andererseits, da sie sich nicht als so robust herausgestellt hat.

Als Unternehmen, bei dem es nicht auf ein paar Tausend Euro ankommt, würde ich auf Drittanbieter Tools zurückgreifen. Ich hatte mit allen 3 beschriebenen Produkten Erfahrung, aber konnte keine großen Probleme ausmachen. Dies hat Vorteile gegenüber den ODATA und dergleichen, da sich der Hersteller um die etwaigen Problemfälle wie NTEXT udgl. kümmern muss.

Von C# als Source oder Destination würde ich tendenzielle eher abraten, da der Aufwand recht groß ist, das jeweils zu konfigurieren/programmieren. Als wesentlich sinnvoller erachte ich die Möglichkeit, generische Lösungen zu basteln, die Sharepoint => SQL und umgekehrt die Daten synchronisieren. Ich konnte derartige Lösungen bereits mehrfach implementieren. Diese sind sehr robust, laufen aber in der Regel asynchron.

Privat verwende ich in der Regel Power Query oder ODATA als Datenquelle und die oben beschriebenen Lösung um SQL Tabellen mit Sharepoint Listen zu synchronisieren.