Ich würde es nicht mit einem gespeicherten proc. Ich würde SSIS verwenden. Es hat eine für jede Datei Aufgabe, die Sie verwenden können. Wenn die Datei geladen wurde, würde ich sie an einen Speicherort im Archiv verschieben, damit sie beim nächsten Mal nicht verarbeitet wird. Alternativ könnten Sie eine Tabelle erstellen, in der Sie die Namen der Dateien speichern, die erfolgreich verarbeitet wurden und die für jede Dateischleife alle in dieser Tabelle überspringen lassen, aber dann erhalten Sie immer mehr Dateien zum Durchlaufen, besser zum Verarbeiten von Dateien zu einem anderen Ort, wenn du kannst.
Und persönlich würde ich auch die Dateidaten in eine Zwischenspeichertabelle legen, bevor die Daten in die Final Table geladen werden. Wir verwenden zwei von ihnen, einen für die Rohdaten und einen für die bereinigten Daten. Dann transformieren wir in Staging-Tabellen, die den relationalen Tabellen in der Produktion entsprechen, um sicherzustellen, dass die Daten die Anforderungen erfüllen, bevor sie die Produktion beeinflussen und Ausnahmen an eine Ausnahmetabelle von Datensätzen senden, die aus dem einen oder anderen Grund nicht eingefügt werden können. Wenn Sie im Gesundheitswesen arbeiten, sollten Sie sicherstellen, dass Ihr Prozess die gesetzlichen Vorschriften für die Speicherung von Patientenakten für das Land erfüllt, in dem Sie sich befinden, sofern vorhanden (siehe HIPAA in den USA). Möglicherweise müssen Sie direkt in die Produktion laden oder den Zugriff auf Staging-Tabellen und -Dateien stark einschränken.
Etwas wie dieses ... https://www.mssqltips.com/sqlservertip/2874/loop-through-flat-files-in-sql-server-integration-services/ – nscheaffer