Restartování balíčků pomocí kontrolních bodů

Platí pro:SQL Server SSIS Integration Runtime v rámci Azure Data Factory

Integrační služby mohou restartovat neúspěšné balíčky od místa selhání, místo aby znovu spustily celý balíček. Pokud je balíček nakonfigurován tak, aby používal kontrolní body, informace o spuštění balíčku se zapisují do kontrolního souboru. Když je neúspěšný balíček znovu spuštěn, kontrolní soubor se použije k restartu balíčku od místa selhání. Pokud balíček úspěšně proběhne, soubor kontrolního bodu se odstraní a při příštím spuštění balíčku se znovu vytvoří.

Použití kontrolních bodů v balíčku může přinést následující výhody.

  • Vyhněte se opakovanému stahování a nahrávání velkých souborů. Například balíček, který stahuje více velkých souborů pomocí FTP úlohy pro každý download, lze po selhání stažení jednoho souboru restartovat a poté stáhnout pouze tento soubor.

  • Vyhněte se opakovanému načítání velkého množství dat. Například balíček, který provádí hromadné vkládání do dimenzionálních tabulek v datovém skladu pomocí jiné úlohy Bulk Insert pro každou dimenzi, lze znovu spustit, pokud vložení selže u jedné dimenzionální tabulky, a pouze tato dimenze bude znovu načtena.

  • Vyhněte se opakování agregace hodnot. Například balíček, který počítá mnoho agregátorů, jako jsou průměry a součty, pomocí samostatné úlohy Tok dat pro provádění každé agregace, lze po neúspěšném výpočtu agregace restartovat a pouze tato agregace bude znovu vypočítána.

Pokud je balíček nakonfigurován tak, aby používal kontrolní body, integrační služby zachytí restartovací bod v souboru kontrolních bodů. Typ kontejneru, který selže, a implementace funkcí, jako jsou transakce, ovlivňují restartovací bod, který je zaznamenán v kontrolním souboru. Aktuální hodnoty proměnných jsou také zachyceny v souboru kontrolních bodů. Hodnoty proměnných, které mají typ dat objektu , však nejsou uloženy v kontrolních souborech.

Definování bodů restartu

Kontejner hostitele úlohy, který zapouzdřuje jednu úlohu, je nejmenší atomární jednotkou práce, kterou lze restartovat. Kontejner Foreach Loop a transakční kontejner jsou také považovány za atomové jednotky práce.

Pokud je balíček zastaven, zatímco běží transaktovaný kontejner, transakce končí a veškerá práce provedená kontejnerem je vrácena zpět. Když je balíček restartován, kontejner, který selhal, se znovu spustí. Dokončení jakýchkoli podřízených kontejnerů kontejneru zapojeného do transakce se v souboru kontrolního bodu nezaznamenává. Proto se při restartování balíčku znovu spustí transakční kontejner a jeho podřízené kontejnery.

Note

Používání kontrolních bodů a transakcí ve stejném balíčku může způsobit neočekávané výsledky. Například když balíček selže a restartuje se z kontrolního bodu, může balíček zopakovat transakci, která již byla úspěšně potvrzena.

Data kontrolních bodů nejsou uložena pro kontejnery For Loop a Foreach Loop. Když je balíček restartován, kontejnery For Loop a Foreach Loop a podkontejnery se znovu spustí. Pokud podkontejner ve smyčce úspěšně běží, není zaznamenán v kontrolním souboru, místo toho se znovu spustí. Další informace a náhradní řešení naleznete v článku Kontrolní body SSIS se neuplatní pro položky v kontejnerech For Loop nebo Foreach Loop.

Pokud je balíček restartován, konfigurace balíčku se nenačítají, místo toho balíček používá konfigurační informace zapsané do kontrolního souboru. To zajišťuje, že balíček použije při opětovném spuštění stejné konfigurace jako v době selhání.

Balíček lze restartovat pouze na úrovni řídicího toku. Nemůžete restartovat balíček uprostřed datového toku. Aby se zabránilo opětovnému spouštění celého data flow, může být balíček navržen tak, aby obsahoval více datových toků, z nichž každý používá jinou úlohu Tok dat. Tímto způsobem lze balíček restartovat a znovu spustit pouze jednu Tok dat úlohu.

Konfigurace balíčku pro restart

Soubor kontrolních bodů obsahuje výsledky spuštění všech dokončených kontejnerů, aktuální hodnoty systémových a uživatelsky definovaných proměnných a informace o konfiguraci balíčku. Soubor také obsahuje jedinečný identifikátor balíčku. Pro úspěšné restartování balíčku musí identifikátor balíčku v checkpoint souboru a balíček odpovídat; jinak restart selže. To zabraňuje tomu, aby balíček používal kontrolní soubor napsaný jinou verzí balíčku. Pokud balíček úspěšně proběhne, po jeho restartování se soubor kontrolního bodu odstraní.

Následující tabulka uvádí vlastnosti balíčku, které nastavíte pro implementaci checkpointů.

Property Description
CheckpointFileName Specifikuje název souboru kontrolního bodu.
Použití kontrolních bodů Specifikuje, zda jsou kontrolní body používány.
Uložit kontrolní body Označuje, zda balíček ukládá kontrolní body. Tato vlastnost musí být nastavena na True, aby se balíček restartoval z bodu selhání.

Navíc musíte nastavit vlastnost FailPackageOnFailure na true pro všechny kontejnery v balíčku, které chcete identifikovat jako body restartu.

Vlastnost ForceExecutionResult můžete použít k testování použití kontrolních bodů v balíčku. Nastavením ForceExecutionResult úkolu nebo kontejneru na Failure můžete napodobit selhání v reálném čase. Když balíček znovu spustíte, neúspěšná úloha a kontejnery se znovu spustí.

Použití kontrolních stanovišť

Vlastnost CheckpointUsage lze nastavit na následující hodnoty:

Value Description
nikdy Specifikuje, že checkpoint soubor není použit a že balíček běží od začátku workflow balíčku.
Vždy Určuje, že se soubor kontrolního bodu vždy používá a že se balíček restartuje od místa předchozího selhání při spuštění. Pokud se soubor kontrolního bodu nenajde, balíček selže.
IfExists Specifikuje, že kontrolní soubor je použit, pokud existuje. Pokud kontrolní soubor existuje, balíček restartuje od místa předchozího selhání při vykonání; jinak běží od začátku pracovního toku balíčku.

Note

Možnost /CheckPointing on v nástroji dtexec odpovídá nastavení vlastnosti SaveCheckpoints balíčku na True a vlastnosti CheckpointUsage na Always. Další informace naleznete v tématu dtexec Utility.

Zabezpečení souborů kontrolních bodů

Ochrana na úrovni balíčku nezahrnuje ochranu souborů kontrolních stanovišť a tyto soubory musíte chránit zvlášť. Data z kontrolních bodů lze ukládat pouze v souborovém systému a měli byste použít operační systém access control list (ACL) k zabezpečení místa nebo složky, kde soubor ukládáte. Je důležité zabezpečit soubory kontrolních bodů, protože obsahují informace o stavu balíčku, včetně aktuálních hodnot proměnných. Například proměnná může obsahovat soubor záznamů s mnoha řádky soukromých dat, například telefonními čísly. Další informace naleznete v tématu Přístup k souborům používaným balíčky.

Konfigurujte kontrolní body pro restartování neúspěšného balíčku

Balíčky Integration Services nakonfigurujete tak, aby se po selhání restartovaly od místa selhání, místo opětovného spuštění celého balíčku, nastavením vlastností, které se vztahují ke kontrolním bodům.

Konfigurovat balíček pro restartování

  1. V nástrojích SQL Server Data Tools (SSDT) otevřete projekt Integrační služby, který obsahuje balíček, který chcete nakonfigurovat.

  2. V Průzkumníku řešení poklikáním otevřete balíček.

  3. Klikněte na kartu Řídicí tok.

  4. Klikněte pravým tlačítkem na libovolné místo na pozadí návrhové plochy toku řízení a potom klikněte na Vlastnosti.

  5. Nastavte vlastnost SaveCheckpoints na True.

  6. Zadejte název souboru checkpointu do vlastnosti CheckpointFileName.

  7. Nastavte vlastnost CheckpointUsage na jednu ze dvou hodnot:

    • Vyberte Vždy, abyste balíček vždy restartovali z checkpointu.

      Important

      Chyba nastává, pokud není soubor kontrolního bodu dostupný.

    • Vyberte IfExists pro restart balíčku pouze pokud je kontrolní soubor dostupný.

  8. Nakonfigurujte úlohy a kontejnery, ze kterých lze balíček restartovat.

    • Klikněte pravým tlačítkem na úkol nebo kontejner a klikněte na Vlastnosti.

    • Nastavte vlastnost FailPackageOnFailure na True pro každý vybraný úkol a kontejner.