Ein weit verbreiteter Irrglaube ist, dass man, um XML-Daten von einem Webservice zu holen, externe Programme benötigt. Doch Webservice-Daten können auch direkt über T-SQL ins Datawarehouse geladen werden.
Nicht nur mit SQL Server Integration Services (SSIS) können XML-Daten von einem Webservice in das Datawarehouse importiert werden. Es besteht auch die Möglichkeit, XML direkt im T-SQL zu verarbeiten. Diese Funktionalität umfasst die Kommunikation mit SOAP-Schnittstellen, REST-Webservices oder auch das Abrufen von einfachen XML-Dateien.
In dem nachfolgenden Beispiel werden aktuelle Wetterinformationen für eine beliebige Stadt von der OpenWeatherMap-API geladen:
-- Konfiguration um die aktuelle Temperatur für die Stadt, Land zu bekommen.
declare @city nvarchar(200) = 'Bonn,de'
-- Webservice URL
declare @webservice as Varchar(8000) = 'http://api.openweathermap.org/data/2.5/weather?q='+@city+'&mode=xml';
declare @Object as Int;
-- Temporäre variable um das Ergebnis des Webrequest zwischen zu speichern.
declare @ResponseText as Varchar(8000);
-- Konfiguration des Webservice Request
Exec sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
Exec sp_OAMethod @Object, 'open', NULL, 'get', @webservice, 'false'
Exec sp_OAMethod @Object, 'send'
Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
-- Zum Testen/Prüfen des Ergebnisses "Select @ResponseText" verwenden
Select @ResponseText as WebserviceErgebnis
-- Webservice Object aus dem Speicher freigeben.
Exec sp_OADestroy @Object
-- XML Variable zum auswerten erstellen
declare @xml xml = CONVERT(XML, @ResponseText)
-- Daten aus dem XML abrufen
select @xml.value('(/current/city/@name)[1]', 'nvarchar(max)') as Stadt,
@xml.value('(/current/temperature/@value)[1]', 'float')-273.15 as [Temperatur (in Celsius)]
GO
Kategorien: SQL Server, Technical
Schlagwörter: Microsoft SQL Server, T-SQL

Haben Sie Fragen zu diesem Artikel oder brauchen Sie Unterstützung?
Nehmen Sie mit uns Kontakt auf!
Wir unterstützen Sie gerne bei Ihren Vorhaben!