SharePoint Listen und Anhänge mit SQL-Server synchronisieren
avatar

In einigen Anwendungsszenarien kann es hilfreich sein, SharePoint Listeneinträge in einer SQL Server Datenbank zu replizieren. Zum Beispiel, wenn über SharePoint die berechtigungsgesteuerte Datenpflege einer proprietären Lösung erfolgen soll. Mit den Business Connectivity Services (BCS) ist es sehr einfach eine Liste mit einer Datenbank Tabelle zu verbinden. Wenn allerdings an Listeneinträgen ein oder mehrere Anhänge gespeichert werden, so lässt sich dies noch nicht mit dem BCS realisieren.

In einem solchen Fall können die Integration Services (SSIS) vom SQL Server die notwendigen Funktionalitäten bereitstellen. Dazu wird zunächst eine SharePoint Listen Datenquellen Komponente benötigt, die unter Codeplex heruntergeladen werden kann.

Mit Hilfe dieser Komponente kann die betreffende Liste in den SSIS eingelesen werden. Auf diese Daten greifen wir nun über eine Skript Komponente in SSIS zu. Als nächstes wird ein Web Service benötigt, um auf die Anhänge der Liste zuzugreifen. Dazu muss zunächst eine Proxy Klasse hinzugefügt werden, die über wsdl.exe (Visual Studio) und Kommandozeile in VB oder C# mit Verweis auf den SharePoint Listen Web Service “/_vti_bin/lists.asmx” erzeugt wird:

wsdl /language:VB http://SharePoint_host/_vti_bin/lists.asmx?wsdl /out:List.vb
 

In unserem Fall verwenden wir VB. Diese Klasse wird in dem Skripteditor der Skriptkomponente hinzugefügt und in der Skript Prozedur instanziiert und initialisiert:

image

image

In obigen Code wird die WebServiceURL über eine Variable an die Skriptkomponente übergeben. Ferner wird die URL auf die Liste benötigt (ListURL) , die wir ebenfalls als Variable definieren.

Nun können wir auf die Anhänge der jeweiligen Listeneinträge über den WebService zugreifen:

image

Über eine Foreach Schleife können sämtliche Einträge (Anhänge) der Liste geholt und weiter verarbeitet werden:

image

Der Dateipfad wird über childNode.InnerText übergeben. Im obigen Beispiel wird die weitere Verarbeitung an eine eigene Prozedur “WriteAttachments” delegiert. Der Dateiname kann daraus extrahiert werden:

image

Nun können die Dateien einfach als Byte Stream über die System.Net.WebClient Klasse heruntergeladen werden und in dem Dataflow Task in die Datenbank geschrieben werden. Listeneinträge und Anhänge werden in zwei getrennten Tabellen abgelegt und über einen Schlüssel referenziert. Dieser Prozess lässt sich für Update Prozesse verfeinern, sodass nur die aktualisierten bzw. genehmigten Anhänge in die Datenbank geschrieben bzw. gelöschte Anhänge wieder entfernt werden.

Fazit: Wenn auch nicht ganz so einfach wie mit den BCS ist es dennoch möglich Anhänge einer SharePoint Liste in eine SQL Server Datenbank abzuspeichern und zu synchronisieren.

Ein Gedanke zu “SharePoint Listen und Anhänge mit SQL-Server synchronisieren
avatar

  1. Pingback: SharePoint Listen und Anhänge mit SQL-Server synchronisieren - SharePoint Blogs in German - Bamboo Nation

Schreibe einen Kommentar