Announcement

Collapse
No announcement yet.

SSIS - Variablen Wert zuweisen funktioniert nicht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SSIS - Variablen Wert zuweisen funktioniert nicht

    Hallo,
    als neuer SSIS-User kämpfe ich mich gerade durch die Grundlagen der SSIS-Nutzung.
    Ich habe nun folgendes Problem.
    Ich möchte ein Insert-Statement absetzten.
    Ist ja auch ganz einfach, wenn man über das Datenflußtask geht.
    Es ist dabei aber so, dass ich den Primary Key der Ziel-Tabelle über einen bestimmten Algorithmus neu erstellen muß.
    Dieser Algorithmus wird aus unterschiedlichen Tabellen unterschiedlicher Datenbanken befüllt.

    Bsp: DB2.ZielTab.ID_Ziel = DB1.Tab1.ID_Wert - DB2.Tab2.ID_Wert2 + DB1.Tab2.ID_Wert3

    Meine Idee war nun diese einzelnen Komponenten in Variablen zu schreiben und diese dann in einer entgültigen Variable zusammenzufassen.
    Also:
    Var1 = DB1.Tab1.ID_Wert
    Var2 = DB2.Tab2.ID_Wert2
    Var3 = DB1.Tab2.ID_Wert3
    VarZielID = Var1-Var2+Var3

    Theoretisch scheint es zu funktionieren. Leider werden nach Ausführung der Tasks die Variablenwerte nicht verändert. Sie bleiben einfach auf dem Wert 0 stehen. (Ich mache die Variablenzuweisung über ein einzeiliges Resultset.)
    Setzte ich die entsprechenden SQL-Statements mit denen ich die Variablen befülle in einer normalen Abfrage ab, dann erhalte ich aber das korrekte Ergebnis.

    kann mir da bitte jemand weiter helfen?
    Vielen Dank.

  • #2
    Hallo,

    Hast du schon einmal versucht, einen DataViewer (eine Art Breakpoint) auf die Verbindung zum einzeiligen Resultset zu setzen?
    Auf diese Weise koenntest du zumindestens ueberpruefen, ob die korrekten Werte im Resultset ankommen.

    Hoffe das hilft dir weiter.
    *-- robert.oh. --*

    Comment


    • #3
      Vielen lieben Dank für die schnelle Antwort.

      Der Breakpoint hat ergeben, dass die Variablen korrekt befüllt werden.

      Nun habe ich aber das Problem, dass ich meine ID nicht Updaten kann.

      Ich habe ein einfaches "Task SQL ausführen" genommen um einen Update-befehl mit folgender Sytax loszuschicken:

      Update TabX set ID = ? where ID = ?

      Die beiden ? sind dabei natürlich zwei vorher ermittelte (unterschiedliche)Variablen.
      Ich bekomme den Fehler:

      "Parameterinformationen können nicht von SQL-Anweisung abgeleitet werden. Parameterinformationen müssen gesetzt werden bevor der Befehl abgesetzt wird."

      Ich verstehe die Logik dieses Tools einfach nicht.

      Ich hoffe, dass mir auch hierbei jemand weiterhelfen kann.

      Comment


      • #4
        Um auf die User-Variablen zugreifen zu koennen, musst du meines Wissens nach folgenden Code verwenden:

        [User::myVariable1]

        Daraus wuerde sich ein Update-Command ergeben, der so ausschaut:

        UPDATE TabX SET id = [User::myID] WHERE id = [User::myId]

        Ob du vor den eckigen Klammern noch ein @ oder ein ? als Kennzeichnung brauchst, weiss ich leider nicht genau.

        Hoffe du kommst damit weiter
        *-- robert.oh. --*

        Comment


        • #5
          Vielen Dank für den Tip.

          Leider funktioniert diese Variante nicht.
          Ich werde mal weiter versuchen.

          Comment


          • #6
            Hallo Junivera,

            Du kannst Die Variable nur im Pre- und PostExecute auslesen bzw. schreiben. Du kannst eine Variable nicht aus dem Datenfluss heraus mit Werten befüllen. Besser ist, Du erstellst Dir eine Gespeicherte Prozedur in der Du die Logik ablaufen läßt. Hier stehen Dir alle Möglichkeiten von T-SQL zur Verfügung. Über einen OLE-DB-Befehl kannst Du diese dann á la...

            EXEC spGenerate_IDs ?, ? output

            aufrufen, Parameter übergeben und diese per output wieder zurück erhalten.

            Gruß, Alexander

            Comment

            Working...
            X