Punkty kontrolne usług SSIS nie są honorowane dla elementów kontenera for Loop lub Foreach Loop

Ten artykuł ułatwia obejście problemu polegającego na tym, że punkty kontrolne usług SQL Server Integration Services (SSIS) nie są uznawane za For Loop elementy kontenera ani Foreach Loop nie są honorowane.

Oryginalna wersja produktu: SQL Server
Oryginalny numer KB: 2624458

Symptomy

Rozważmy następujący scenariusz:

  • Usługi Microsoft SQL Server Integration Services można zainstalować na komputerze.

  • Utworzysz pakiet usług SSIS zawierający element Kontener pętli for, po którym następuje kontener sekwencji.

  • Zarówno kontener for loop, jak i elementy Kontener sekwencji mają jedną z następujących elementów:

    • Wykonywanie zadania SQL (OR)
    • Co najmniej dwa zadania WYKONAJ SQL (s), które są uruchamiane równolegle.
  • Należy włączyć ustawienie Punkt kontrolny dla pakietu SSIS.

  • Uruchamiasz pakiet usług SSIS

  • Kontener For Loop kończy się i wykonywanie pakietu jest dostarczane do kontenera sekwencji.

  • Wykonasz jedną z poniższych akcji:

    • W przypadku pakietów z pojedynczym zadaniem Execute SQL należy zatrzymać wykonywanie pakietu, gdy zadanie jest nadal uruchomione.
    • W przypadku pakietów z wieloma zadaniami Wykonywania zadań SQL zatrzymasz wykonywanie pakietu lub wystąpi błąd w jednym z tych zadań, podczas gdy inne zadania Wykonaj sql (s) są nadal uruchomione
  • Pakiet usług SSIS zostanie uruchomiony ponownie.

W tym scenariuszu pakiet rozpoczyna się od For Loop kontenera zamiast kontenera Sequence .

Uwaga 16.

Ten problem nie jest związany z wykonywaniem zadania SQL. Może się to zdarzyć również z innymi zadaniami.

Przyczyna

Jest to celowe. Dane punktu kontrolnego For Loop nie są zapisywane dla elementów kontenera i Foreach Loop kontenera. Jeśli kontener podrzędny w pętli zostanie uruchomiony pomyślnie, nie zostanie zarejestrowany w pliku punktu kontrolnego. Dlatego po ponownym uruchomieniu pakietu zadania w każdym z tych elementów kontenera są wykonywane ponownie.

Rozwiązanie

Aby obejść ten problem, opakuj For Loop kontener lub Foreach Loop wewnątrz kontenera Sequence .