2016-08-08 32 views
1

Ich möchte prüfen, ob ein Unterordner existiert oder nicht. Falls vorhanden, gehe weiter. Wenn nicht, gehe zur nächsten Aufgabe.SSIS - Skriptaufgabe Überprüfen, ob ein Unterordner vorhanden ist

Mein Unterordner ist "C: \ Ordner1 \ Ordner2 \ Ordner3" Ich möchte überprüfen, ob Ordner3 existiert oder nicht.

Ich arbeitete daran. Erstellen 2 Variablen

1> FolderPath = C: \ Ordner1 \ Folder2

2> FolderExists = Boolean = False

Script Task ReadOnlyVariable = @FolderPAth ReadWriteVariable = @FolderExists

Nach Skript Ich füge in Edit-Skript hinzu

Dim DirExists As String 

    DirExists = Dir(CStr(Dts.Variables("Folder3").Value)) 

    If DirExists <> "" Then 

     Dts.Variables("Folder3").Value = True 

    Else 

     Dts.Variables("Folder3").Value = False 

    End If 

Kann jemand korrigieren mich bitte e.

+0

Wenn es wie erhofft funktioniert nicht, wenn Sie es ausführen, was tut sie? Welche Fehler bekommst du? – bpachev

Antwort

0

Basierend auf Ihrem Kommentar scheint es nicht, als ob Sie kümmern, wenn es C# von VB ist, so hier sind Schritte von Anfang bis Ende auf, wie Existenz eines Ordners zu testen und verwenden Sie in eingeschränkter Rangfolge.

  • definieren 2-Package-Level Variablen: FolderPath string, FolderExists boolean enter image description here
  • Script Task hinzufügen und für C# konfigurieren und fügen FolderPath als ReadOnlyVariable und FolderExists als ReadWriteVariable enter image description here
  • Klicken Sie auf Bearbeiten der bearbeiten Skript
  • Blättern Sie zu "#region Namespaces" in der Nähe der Spitze und fügen Sie using System.IO; enter image description here
  • Blättern Sie zu der Definition des Main() Unter und die erste Zeile nach „TODO“ unten hinzufügen, so dass die Routine wird:

    public void Main() 
    { 
        // TODO: Add your code here 
        Dts.Variables["User::FolderExists"].Value = Directory.Exists(Dts.Variables["User::FolderPath"].Value.ToString()); 
    
        Dts.TaskResult = (int)ScriptResults.Success; 
    } 
    
  • Die Aufgabe Skript abgeschlossen ist, und Sie sollten nun in der Lage sein, das verwenden FolderExists-Variable als Ausdruck für die eingeschränkte Priorität.

  • Fügen Sie Ihren nächsten Schritt im Paket hinzu und verbinden Sie sich mit dem grünen Erfolgspfeil. Doppelklicken Sie dann auf den Pfeil und legen Sie die Einschränkungsoptionen fest, um Ausdrücke und Abhängigkeiten und den Ausdruck einfach als FolderExists-Variable auszuwerten. enter image description here

diese Lösung wurde vollständig getestet und ist betriebs

+0

Das folgende ist meine gesamte VB-Skript –

+0

Matt, ich bin neu in SSIS und die Tipps, die Sie mir geben, ist sehr hohes Niveau. Ich konnte es nicht korrigieren. Aktuelle Phase ist, ich bekomme weder einen Fehler, noch geht es voran. Paket wird bei der Skriptaufgabe gestoppt. Es sollte der nächste Schritt sein, entweder wenn es das Verzeichnis gefunden hat, es muss für das Verzeichnis gehen oder diesen Schritt überspringen und für den nächsten Schritt weitergehen. Wenn Sie Ihren Code erarbeiten können, wird es sehr hilfreich für mich sein. Andere Art, wie ich nach Kante frage. –

+0

ist neu für Scripting ist aufregend, normalerweise würde ich hoffe, Ihnen Werkzeuge zu geben, um herauszufinden, was ist, was ich an diesem Punkt tat, muss ich von dieser Frage weitergehen, so aktualisierte ich genaue Schritte einer funktionierenden und getesteten Methode. Viel Glück bei Ihrem Lernen und schauen Sie einige der Links, die ich ursprünglich gepostet hatte, um es herauszufinden. Hinweis Ich habe C# verwendet. Ich räume auf und lösche alle Kommentare, die nicht mehr benötigt werden. – Matt