Neustarten von Paketen mit PrüfpunktenRestart Packages by Using Checkpoints

Integration ServicesIntegration Services können fehlerhafte Pakete an dem Punkt neu gestartet werden, an dem der Fehler aufgetreten ist. Sie brauchen also nicht noch einmal vollständig ausgeführt werden.can restart failed packages from the point of failure, instead of rerunning the whole package. Wenn ein Paket zum Verwenden von Prüfpunkten konfiguriert ist, werden Informationen zur Ausführung des Pakets in eine Prüfpunktdatei geschrieben.If a package is configured to use checkpoints, information about package execution is written to a checkpoint file. Wenn das fehlerhafte Paket erneut ausgeführt wird, wird die Prüfpunktdatei verwendet, um das Paket von dem Punkt aus, an dem der Fehler aufgetreten ist, auszuführen.When the failed package is rerun, the checkpoint file is used to restart the package from the point of failure. Wenn das Paket erfolgreich ausgeführt wird, wird die Prüfpunktdatei gelöscht und beim nächsten Ausführen des Pakets neu erstellt.If the package runs successfully, the checkpoint file is deleted, and then re-created the next time the package is run.

Das Verwenden von Prüfpunkten in einem Paket bietet die folgenden Vorteile:Using checkpoints in a package can provide the following benefits.

  • Vermeiden von wiederholten Download- und Uploadvorgängen für umfangreiche Dateien.Avoid repeating the downloading and uploading of large files. Beispielsweise kann ein Paket, das mehrere umfangreiche Dateien mithilfe je eines FTP-Tasks herunterlädt, nach dem Herunterladen einer einzigen fehlerhaften Datei neu gestartet werden und anschließend nur diese eine Datei erneut herunterladen.For example, a package that downloads multiple large files by using an FTP task for each download can be restarted after the downloading of a single file fails and then download only that file.

  • Vermeiden, dass große Datenmengen wiederholt geladen werden müssen.Avoid repeating the loading of large amounts of data. Beispielsweise kann ein Paket, das mithilfe von einzelnen Masseneinfügungstasks Masseneinfügungen in Dimensionstabellen in einem Data Warehouse ausführt, neu gestartet werden, wenn eine Einfügung für eine einzige Dimensionstabelle einen Fehler auslöst. Anschließend braucht nur die fehlerhafte Dimension erneut geladen werden.For example, a package that performs bulk inserts into dimension tables in a data warehouse using a different Bulk Insert task for each dimension can be restarted if the insertion fails for one dimension table, and only that dimension will be reloaded.

  • Vermeiden wiederholter Wertaggregationen.Avoid repeating the aggregation of values. Beispielsweise kann ein Paket, das mithilfe von einzelnen Datenflusstasks zahlreiche verschiedene Aggregate berechnet, wie z. B. Mittelwerte oder Summen, neu gestartet werden, nachdem die Berechnung einer einzigen Aggregation einen Fehler auslöst. Anschließend braucht nur die fehlerhafte Aggregation neu berechnet werden.For example, a package that computes many aggregates, such as averages and sums, using a separate Data Flow task to perform each aggregation, can be restarted after computing an aggregation fails and only that aggregation will be recomputed.

Wenn ein Paket für das Verwenden von Prüfpunkten konfiguriert ist, zeichnet Integration ServicesIntegration Services den Punkt, an dem neu gestartet werden soll, in der Prüfpunktdatei auf.If a package is configured to use checkpoints, Integration ServicesIntegration Services captures the restart point in the checkpoint file. Der in der Prüfpunktdatei aufgezeichnete Punkt, an dem neu gestartet werden soll, ist vom Typ des fehlerhaften Containers und der Implementierung von Funktionen wie z. B. Transaktionen abhängig.The type of container that fails and the implementation of features such as transactions affect the restart point that is recorded in the checkpoint file. Die aktuellen Werte von Variablen werden ebenfalls in der Prüfpunktdatei erfasst.The current values of variables are also captured in the checkpoint file. Die Werte von Variablen mit dem Object-Datentyp werden jedoch nicht in Prüfpunktdateien gespeichert.However, the values of variables that have the Object data type are not saved in checkpoint files.

Definieren von Prüfpunkten, an denen neu gestartet wirdDefining Restart Points

Die kleinste atomare Arbeitseinheit, die neu gestartet werden kann, ist der Taskhostcontainer, der einen einzelnen Task kapselt.The task host container, which encapsulates a single task, is the smallest atomic unit of work that can be restarted. Der Foreach-Schleifencontainer und der Transaktionscontainer werden ebenfalls als atomare Arbeitseinheiten behandelt.The Foreach Loop container and a transacted container are also treated as atomic units of work.

Wenn ein Paket während des Ausführens eines Transaktionscontainers beendet wird, wird auch die Transaktion beendet, und für alle eventuell durch den Container ausgeführten Vorgänge wird ein Rollback ausgeführt.If a package is stopped while a transacted container is running, the transaction ends and any work performed by the container is rolled back. Beim Neustarten des Pakets wird der fehlerhafte Container erneut ausgeführt.When the package is restarted, the container that failed is rerun. Das Abschließen eventuell vorhandener untergeordneter Container in Transaktionscontainern wird nicht in der Prüfpunktdatei aufgezeichnet.The completion of any child containers of transacted container is not recorded in the checkpoint file. Daher werden beim Neustarten des Pakets sowohl der Transaktionscontainer als auch seine untergeordneten Container erneut ausgeführt.Therefore, when the package is restarted, the transacted container and its child containers run again.

Hinweis

Das Verwenden von Prüfpunkten und Transaktionen im gleichen Paket könnte unerwartete Ergebnisse verursachen.Using checkpoints and transactions in the same package could cause unexpected results. Wenn beispielsweise ein Paket einen Fehler verursacht und von einem Prüfpunkt neu startet, wiederholt das Paket möglicherweise eine Transaktion, die bereits erfolgreich ausgeführt wurde.For example, when a package fails and restarts from a checkpoint, the package might repeat a transaction that has already been successfully committed.

Für For- und Foreach-Schleifencontainer werden keine Prüfpunktdaten gespeichert.Checkpoint data is not saved for For Loop and Foreach Loop containers. Beim Neustart eines Pakets werden sowohl For- und Foreach-Schleifencontainer als auch deren untergeordnete Container erneut ausgeführt.When a package is restarted, the For Loop and Foreach Loop containers and the child containers are run again. Wenn ein untergeordneter Container einer Schleife erfolgreich ausgeführt wurde, wird er nicht in der Prüfpunktdatei aufgezeichnet, sondern erneut ausgeführt.If a child container in the loop runs successfully, it is not recorded in the checkpoint file, instead it is rerun. Weitere Informationen und eine Umgehungslösung finden Sie unter SSIS-Prüfpunkte werden bei Elementen von For- und Foreach-Schleifencontainern nicht berücksichtigt.For more information and a workaround, see SSIS Checkpoints are not honored for For Loop or Foreach Loop container items.

Beim Neustarten des Pakets werden die Paketkonfigurationen nicht erneut geladen; stattdessen verwendet das Paket die Konfigurationsinformationen der Prüfpunktdatei.If the package is restarted the package configurations are not reloaded, instead the package uses the configuration information written to the checkpoint file. Auf diese Weise wird sichergestellt, dass das Paket beim erneuten Ausführen wie beim ursprünglichen (fehlerhaften) Ausführen dieselben Konfigurationen verwendet.This ensures that the package uses the same configurations when it is rerun as the time it failed.

Ein Paket kann nur auf der Ablaufsteuerungsebene neu gestartet werden.A package can be restarted only at the control flow level. Sie können ein Paket also nicht mitten in einem Datenfluss neu starten.You cannot restart a package in the middle of a data flow. Um zu vermeiden, dass der gesamte Datenfluss erneut ausgeführt werden muss, können Sie beim Entwerfen des Pakets mehrere Datenflüsse planen, die jeweils einen bestimmten Datenflusstask verwenden.To avoid rerunning the whole data flow, the package might be designed to include multiple data flows, each one using a different Data Flow task. Auf diese Weise kann das Paket neu gestartet werden und dabei nur einen Datenflusstask erneut ausführen.This way the package can be restarted, rerunning only one Data Flow task.

Konfigurieren des Neustarts eines PaketsConfiguring a Package to Restart

Die Prüfpunktdatei enthält das Ausführungsergebnis aller abgeschlossenen Container, die aktuellen Werte der benutzerdefinierten und der Systemvariablen, sowie Paketkonfigurationsinformationen.The checkpoint file includes the execution results of all completed containers, the current values of system and user-defined variables, and package configuration information. Die Datei enthält außerdem den eindeutigen Bezeichner des Pakets.The file also includes the unique identifier of the package. Der Paketbezeichner in der Prüfpunktdatei muss mit dem des Pakets übereinstimmen, damit das Paket neu gestartet werden kann. Anderenfalls tritt beim Neustarten ein Fehler auf.To successfully restart a package, the package identifier in the checkpoint file and the package must match; otherwise the restart fails. Auf diese Weise wird vermieden, dass ein Paket eine Prüfpunktdatei verwendet, die von einer anderen Paketversion geschrieben wurde.This prevents a package from using a checkpoint file written by a different package version. Wenn das Paket nach dem Neustarten erfolgreich ausgeführt wird, wird die Prüfpunktdatei gelöscht.If the package runs successfully, after it is restarted the checkpoint file is deleted.

In der folgenden Tabelle sind die Paketeigenschaften aufgeführt, die Sie zum Implementieren von Prüfpunkten festlegen können.The following table lists the package properties that you set to implement checkpoints.

EigenschaftProperty DescriptionDescription
CheckpointFileNameCheckpointFileName Gibt den Namen der Prüfpunktdatei an.Specifies the name of the checkpoint file.
CheckpointUsageCheckpointUsage Gibt an, ob Prüfpunkte verwendet werden.Specifies whether checkpoints are used.
SaveCheckpointsSaveCheckpoints Gibt an, ob das Paket Prüfpunkte speichert.Indicates whether the package saves checkpoints. Diese Eigenschaft muss auf True festgelegt sein, damit ein Paket an dem Punkt neu gestartet wird, an dem ein Fehler aufgetreten ist.This property must be set to True to restart a package from a point of failure.

Darüber hinaus müssen Sie die FailPackageOnFailure-Eigenschaft festlegen, um true für alle Container im Paket, das Sie identifizieren möchten neu starten.Additionally, you must set the FailPackageOnFailure property to true for all the containers in the package that you want to identify as restart points.

Mit der ForceExecutionResult-Eigenschaft können Sie die Verwendung der Prüfpunkte eines Pakets testen.You can use the ForceExecutionResult property to test the use of checkpoints in a package. Sie können einen Echtzeitfehler imitieren, indem Sie die ForceExecutionResult-Eigenschaft eines Tasks oder eines Containers auf Failure festlegen.By setting ForceExecutionResult of a task or container to Failure, you can imitate real-time failure. Wenn Sie das Paket erneut ausführen, werden der fehlerhafte Task bzw. die fehlerhaften Container erneut ausgeführt.When you rerun the package, the failed task and containers will be rerun.

Syntax von PrüfpunktenCheckpoint Usage

Die CheckpointUsage-Eigenschaft kann auf die folgenden Werte festgelegt werden:The CheckpointUsage property can be set to the following values:

WertValue DescriptionDescription
Never Gibt an, dass die Prüfpunktdatei nicht verwendet wird und dass das Paket vom Beginn des Paketworkflows aus ausgeführt wird.Specifies that the checkpoint file is not used and that the package runs from the start of the package workflow.
Always Gibt an, dass die Prüfpunktdatei immer verwendet wird und dass das Paket von dem Punkt aus neu gestartet wird, an dem bei der letzten Ausführung ein Fehler aufgetreten ist.Specifies that the checkpoint file is always used and that the package restarts from the point of the previous execution failure. Wenn die Prüfpunktdatei nicht gefunden wird, schlägt das Paket fehl.If the checkpoint file is not found, the package fails.
IfExists Gibt an, dass die Prüfpunktdatei verwendet wird, falls sie vorhanden ist.Specifies that the checkpoint file is used if it exists. Wenn die Prüfpunktdatei vorhanden ist, wird das Paket an dem Punkt neu gestartet, an dem bei der letzten Ausführung ein Fehler aufgetreten ist; anderenfalls wird das Paket vom Beginn des Paketworkflows aus ausgeführt.If the checkpoint file exists, the package restarts from the point of the previous execution failure; otherwise, it runs from the start of the package workflow.

Hinweis

Die /CheckPointing auf Option von Dtexec entspricht dem Festlegen der SaveCheckpoints -Eigenschaft des Pakets zu True, und die CheckpointUsage Eigenschaft auf Always.The /CheckPointing on option of dtexec is equivalent to setting the SaveCheckpoints property of the package to True, and the CheckpointUsage property to Always. Weitere Informationen finden Sie unter dtexec Utility.For more information, see dtexec Utility.

Sichern von PrüfpunktdateienSecuring Checkpoint Files

Der Schutz auf Paketebene schließt nicht den Schutz von Prüfpunktdateien ein. Daher müssen diese Dateien separat gesichert werden.Package level protection does not include protection of checkpoint files and you must secure these files separately. Prüfpunktdaten können nur im Dateisystem gespeichert werden. Sie sollten daher eine Zugriffssteuerungsliste (ACL, Access Control List) des Betriebssystems verwenden, um den Speicherort der Datei bzw. den Ordner, in dem die Datei gespeichert wird, zu sichern.Checkpoint data can be stored only in the file system and you should use an operating system access control list (ACL) to secure the location or folder where you store the file. Prüfpunktdateien sollten unbedingt gesichert werden, da sie Informationen zum Paketstatus enthalten, einschließlich der aktuellen Variablenwerte.It is important to secure checkpoint files because they contain information about the package state, including the current values of variables. Beispielsweise kann eine Variable ein Recordset mit mehreren Zeilen privater Daten, wie z. B. Telefonnummern, enthalten.For example, a variable may contain a recordset with many rows of private data such as telephone numbers. Weitere Informationen finden Sie unter Zugriff auf Dateien, die von Paketen verwendet werden.For more information, see Access to Files Used by Packages.

So konfigurieren Sie die PrüfpunkteigenschaftenTo configure the checkpoint properties

Externe RessourcenExternal Resources

Siehe auchSee Also

SQL Server Integration ServicesSQL Server Integration Services