2017-12-20 1 views
1

ich ein SSIS-Paket mit einfachen DFT erstellt und Dateien von OLEDB Quelle OLEDB Ziel zu übertragen. Wenn ich eine neue Spalte in meiner Quellentabelle hinzufüge, wird das Paket noch erfolgreich ausgeführt, aber ich möchte, dass mein Paket fehlschlägt. Kann jemand vorschlagen, wie man es repariert?SSIS-Paket ausgeführt wird, während Änderung auf Quelltabelle getan

+1

Sie kann es nicht machen scheitern, da es die Metadaten Ihrer Tabelle enthält, und Sie haben Ihre neue Spalte nicht zugeordnet. Dann geht es nur weiter, als nichts hinzugefügt wurde. Wenn Sie einen Fehler machen müssen, benötigen Sie ein SQL-Skript, um zu schreiben, dass es fehlschlägt, wenn neue Zeilen zu dieser Tabelle hinzugefügt werden. – plaidDK

Antwort

0

wenn eine Tabelle in OLEDB Quelle ausgewählt wurde, werden die Metadaten der Tabelle auf die Komponente OLEDB Source abgebildet.

Jedes Mal, wenn Sie das Paket ausführen, sendet es einen SELECT * From Table Befehl an den SQL-Server und ruft die Daten ab, und jede Spalte aus der SQL-Tabelle wird der Spalte OLEDB Source zugeordnet.

Wenn eine Spalte in SQL gefunden wird, und es ist nicht definiert in OLEDB Source es ignoriert. In der anderen Hand, wenn eine Spalte nicht in SQL gefunden wird, und es wird definiert in OLEDB Source wird es eine Ausnahme werfen.

Die einzige Möglichkeit, Metadaten zu validieren, bevor das Paket läuft, ist eine Execute SQL Task oder Script Task zu überprüfen, um die Metadaten hinzuzufügen, bevor die DFT ausgeführt wird.

Referenzen

0

Im Bereich Ablaufsteuerung, eine Execute SQL Task vor Ihrer DFT hinzufügen. die Verbindung zu Ihrer Datenbank einrichten und für Ihre SQLStatement folgenden verwenden:

CREATE TABLE #temp (<define all columns currently in your OLEDB Source Table>) 

INSERT INTO #temp 
SELECT TOP 1 * 
FROM <your OLEDB Source Table> 

dieses „worst practice“ einfügen Syntax Durch die Verwendung Sie einen Fehler, wenn Ihre OLEDB Quelltabelle alle Spalten hinzugefügt oder entfernt hat verursachen können.

Verwandte Themen