So führen Sie das SSIS-Paket aus, wenn eine Datei im Ordner angekommen ist

8

Die Anforderung besteht darin, das SSIS-Paket auszuführen. Wenn eine Datei in einem Ordner angekommen ist, möchte ich das Paket nicht manuell starten.

Es ist nicht sicher über die Ankunft der Datei, auch die Dateien können mehrmals ankommen.Wenn jemals die Dateien angekommen ist, muss dies in eine Tabelle geladen werden.Ich denke, einige Lösung wie File Watcher Aufgabe, immer noch erwarten, das Paket zu starten

    
user1254579 29.01.2014, 16:07
quelle

4 Antworten

7

Ich habe dies in der Vergangenheit mit einem Endlosschleife-Paket getan, das zum Beispiel vom SQL Server-Agenten aufgerufen wurde:

Dies ist mein Endlosschleife-Paket:

Setzen Sie 3 Variablen:

IsFileExists - Boolean - 0

FolderLocation - String - C: \ Wo die Datei in \

eingefügt werden soll

IsFileExists Boolean - 0

Für den For-Schleifencontainer:

Legen Sie die IsFileExists-Variablen wie oben fest.

Richten Sie eine C # -Skriptaufgabe mit der ReadOnlyVariable als User :: FolderLocation ein und haben Sie Folgendes:

%Vor%

Was dies bedeutet, ist im Wesentlichen den Ordner-Speicherort für eine .txt-Datei zu überwachen, wenn die Datei nicht da ist, wird es für 10 Sekunden schlafen (Sie können dies erhöhen, wenn Sie möchten). Wenn die Datei existiert, wird sie vervollständigt und das Paket wird dann das Ladepaket ausführen. Es wird jedoch weiterhin ausgeführt, sodass das nächste Mal, wenn eine Datei gelöscht wird, das Ladepaket erneut ausgeführt wird.

Stellen Sie sicher, dass Sie dieses foreverloop-Paket als Sql-Server-Agent-Job ausführen, so dass es die ganze Zeit ausgeführt wird. Wir haben ein ähnliches Paket ausgeführt und es hat nie Probleme verursacht.

Stellen Sie außerdem sicher, dass das Eingabepaket die Datei vom Speicherort des Ablageordners entfernt / verschiebt.

    
Peter_R 29.01.2014, 17:08
quelle
5

Wie bereits von anderen vorgeschlagen, sind die Verwendung von WMI-Aufgaben oder einer Endlosschleife zwei Optionen, um dies zu erreichen, aber IMO SSIS ist ressourcenintensiv. Wenn Sie ein Paket ständig im Hintergrund laufen lassen, kann sehr viel Arbeitsspeicher und CPU verbrauchen und Leistungsprobleme mit anderen Paketen verursachen, abhängig davon, wie viele andere Pakete Sie bereits ausgeführt haben. Eine andere Option, die Sie in Betracht ziehen sollten, ist, einen Agentenjob alle 5 Minuten oder 10 Minuten oder so zu planen und Ihr Paket im Job aufzurufen. Konfigurieren Sie das Paket so, dass es nur fortfährt, wenn eine Datei vorhanden ist oder andernfalls.

    
Samuel Vanga 30.01.2014 01:35
quelle
2

Sie können einen Windows-Dienst erstellen, der mithilfe von WMI die Ankunft von Dateien erkennt und Pakete startet. Details dazu, wie Sie sich hier befinden: Ссылка

    
TTeeple 29.01.2014 16:18
quelle
1

Was ist mit der SSIS-Dateiwächter-Aufgabe ?

    
Gustin 23.04.2015 11:00
quelle