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
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 sollIsFileExists 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.
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.
Tags und Links sql-server ssis wmi sql-server-2000