SSIS Scriptkomponente als Quelle für WEB-API
Es gibt einige Web-APIs, die z.B. XML oder csv-Files liefern. Um die in unsere Datenbank zu bekommen eignet sich zum Beispiel die Skriptkomponente des SSIS.
Ich möchte das hier am Beispiel der IBKR(Interaktiv-Broker) Flexquerie zeigen, die für Auswertungszwecken ein XML-File über die eingegangenen Geschäfte zur Verfügung stellt.
Die grundlegende URL für die Abfrage lautet https://gdcdyn.interactivebrokers.com/Universal/servlet/FlexStatementService.SendRequest?t={token}&q={queryId}&v=3
Wobei {token} durch den von IBKR zur Verfügung gestellten Token und {queryId} durch eben jene zu ersetzen sind.
Man legt sich also ein neues SSIS-Projekt im VS (hier VS2022) an.
Legt sich eine Verbindung zur Datenbank (hier Optiontrading) an und fügt einen Datenbankfluss hinzu.

Für den Abruf der Daten fügt man einen HTTP-Verbindungsmanager (hier IBKR) hinzu.

Man kann sich diese URL-dynamisch zusammensetzen lassen, wenn man mehrere Queries abfragen möchte. Im Anschluss fügt man den Datenflusstask eine Skriptkomponente hinzu und definiert sie als Quelle (hier IBKR-Source).
Im Bereich ConnectionManagers fügt man hier den Verbindungsmanager IBKR hinzu.
Im Bereich Inputs and Outputs muss man die Ausgabespalten definieren. Ich beschränke mich hier auf die Spalten „symbol“, „tradeDate“, „quantity“ und „tradePrice“.

Nun geht es an den eigentlichen Skript.
Ich benötige zwei zusätzliche Verweise .
using System.Net.Http;
using System.Xml.Linq;

Im Bereich PreExecution greife ich auf den angelegten Verbindungsmanager zu und frage die Daten ab.

Im Anschluss wird der XML-File geparst und die Werte entsprechen den Ausgabespalten zugeordnet.

Hier stellt man fest, dass VS beim kompilieren eine Fehler erzeugt. Das liegt an den automatisch generierten Code, den VS in das Projekt einfügt. Um das zu beseitigen geht man in die Datei BufferWrapper.cs und hier sieht man sofort den Fehler. Im Text wird ein Wort in Anführungszeichen statt in Hochkomma gestellt. Dies muss geändert werden.

Dies macht man bei allen fehlerhaften Einträgen(für jede Ausgabespalte eins) und dann lässt sich der Skript auch kompilieren.
![]()