Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verwendung von use if..else im Datenfluss basierend auf Benutzervariablenwerten in SSIS

Das können Sie nicht Deaktivieren oder aktivieren Sie Transformationen innerhalb der Data Flow Task . Sie können jedoch Datenflussaufgaben auf der Control Flow aktivieren oder deaktivieren Registerkarte.

Hier ist eine Möglichkeit, dies auf der Registerkarte Ablaufsteuerung zu tun:

Wenn es möglich ist, verschieben Sie die Transformationen Quelle -> Ziel in einzelne Datenflussaufgaben. Etwa wie unten gezeigt.

Angenommen, Sie haben Variablen für jeden Fluss erstellt, um den Datenflusstask basierend auf einer bestimmten Bedingung zu aktivieren oder zu deaktivieren. Für dieses Beispiel habe ich einige Werte fest codiert.

Zum dynamischen Aktivieren oder Deaktivieren von Datenflussaufgaben basierend auf Variablen. Klicken Sie auf eine Datenflussaufgabe und drücken Sie F4 um Properties anzuzeigen . Klicken Sie in den Eigenschaften auf die Ellipse Schaltfläche neben Expressions Eigentum. Sie sehen den Editor für Eigenschaftsausdrücke.

Wählen Sie die Property aus Deaktivieren und verwenden Sie die Ellipse Schaltfläche, um den Ausdruck [email protected][User::Enable_BESTELLDRUCK] Beachten Sie das Ausrufezeichen, da die Variable als Enable deklariert ist aber nur Disable Eigentum verfügbar ist, müssen Sie das Gegenteil tun.

Wiederholen Sie den Vorgang für andere Datenflussaufgaben mit entsprechenden Variablen. Führen Sie das Paket aus und Sie werden feststellen, dass die zweite Datenflussaufgabe nicht ausgeführt wurde, weil die Variable Enable_AKT_FEHLER auf den Wert False gesetzt wurde .

Hoffe das hilft.

Referenz:

Um mehrere Tabellen mit demselben Schema in den ForEach Loop-Container zu laden, werfen Sie einen Blick auf die folgende SO-Antwort. Es überträgt Daten von MS Access an SQL Server. Hoffentlich sollte Ihnen das eine Idee geben.

Wie erhalte ich programmgesteuert die Liste der MS Access-Tabellen in einem SSIS-Paket?