SSIS: Datei aus dem Internet über HTTP downloaden
Für den Download von Dateien aus dem Internet stellen die SSIS keinen eigenen Task zur Verfügung.
Es gibt den FTP-Task und den Task 'Webdienst' in Verbindung mit dem HTTP-Verbindungs-Manager,
aber eine Task für einen automatischen Dateidownload ist nicht vorgesehen.
Die einfachste Lösung ist die Verwendung einer Skripttask, in der ein WebClient für den
Download verwendet wird. Für die erfolgreiche Ausführung des untenstehenden Programmcodes
sind folgende vorbereitende Schritte notwendig:
- Internetverbindung mit Zugriff auf die gewünschte Download URL
- Zwei Paket-Variable in einem SSIS-Paket anlegen
- Einen Skripttask in die Ablaufsteuerung ziehen
- Die Variablen auf der Seite Skript zuweisen
- Den nachfolgenden Programmcode in der Skripttask eingeben (kopieren):
Imports System.Net
Public Class ScriptMain
Public Sub Main()
Dim myWebClient As WebClient
Dim WebUrl As String
Dim Dateiname As String
Dim fireagain As Boolean
Try
myWebClient = New WebClient()
' Variable füllen
WebUrl = CStr(Dts.Variables("WebUrl").Value)
Dateiname = CStr(Dts.Variables("Dateiname").Value)
' Ereignismeldung senden (nur zur Information des Anwenders)
Dts.Events.FireInformation(0, String.Empty, String.Format _
("Downloading '{0}' from '{1}'", WebUrl, Dateiname), _
String.Empty, 0, fireagain)
' Download durchführen
myWebClient.DownloadFile(WebUrl, Dateiname)
Dts.TaskResult = Dts.Results.Success
Catch ex As Exception
' Fehlermeldung senden
Dts.Events.FireError(0, String.Empty, ex.Message, String.Empty, 0)
Dts.TaskResult = Dts.Results.Failure
End Try
End Sub
End Class
Dieser Programmcode basiert auf einen
Weblog
von Ashvini Sharma, dem SSIS Entwicklungsleiter.
Berthold Neumann
19. Mai. 2006