CHECKPOINT (Transact-SQL)

Schreibt alle modifizierten Seiten der aktuellen Datenbank auf den Datenträger. Modifizierte Seiten sind Datenseiten, die in den Puffercache eingegeben und geändert, jedoch noch nicht auf den Datenträger geschrieben wurden. Durch Prüfpunkte kann bei einer späteren Wiederherstellung Zeit eingespart werden, da ein Punkt erstellt wird, an dem auf jeden Fall alle modifizierten Seiten auf den Datenträger geschrieben worden sind.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

CHECKPOINT [ checkpoint_duration ]

Argumente

  • checkpoint_duration
    Gibt den Zeitraum in Sekunden an, in dem der Prüfpunkt abgeschlossen werden muss. Wenn checkpoint_duration angegeben ist, versucht SQL Server Database Engine (Datenbankmodul), den Prüfpunkt innerhalb des angeforderten Zeitraums auszuführen. checkpoint_duration muss ein Ausdruck vom Typ int sein, der größer ist als 0 (null). Wird dieser Parameter nicht angegeben, wird die Prüfpunktdauer von SQL Server Database Engine (Datenbankmodul) automatisch angepasst, sodass die Leistung von Datenbankanwendungen nur minimal beeinträchtigt wird.

    HinweisHinweis

    In SQL Server 2000 basierte der Zeitraum für den Prüfpunktprozess auf der Einstellung für sp_configure RECOVERY INTERVAL.

Hinweise

Aus Gründen der Leistung führt Database Engine (Datenbankmodul) Änderungen an Datenbankseiten im Arbeitsspeicher aus und schreibt die Seite nicht nach jeder Änderung auf den Datenträger. Database Engine (Datenbankmodul) muss jedoch regelmäßig einen Prüfpunkt ausführen, um diese modifizierten Seiten auf den Datenträger zu schreiben. Beim Schreiben der modifizierten Seiten auf den Datenträger wird ein bekannter Punkt erstellt. Von diesem Punkt aus kann Database Engine (Datenbankmodul) mit dem Anwenden von im Protokoll enthaltenen Änderungen beginnen, wenn nach einem unerwarteten Herunterfahren oder Systemabsturz eine Wiederherstellung ausgeführt werden muss. Weitere Informationen finden Sie unter Prüfpunkte und der aktive Teil des Protokolls.

Prüfpunkte können gleichzeitig in einer beliebigen Anzahl von Datenbanken auftreten.

Eine Wiederherstellung von Database Engine (Datenbankmodul) von einem unterbrochenen Prüfpunkt ist nicht möglich. Falls ein Prüfpunkt unterbrochen wird und eine Wiederherstellung erforderlich ist, muss Database Engine (Datenbankmodul) die Wiederherstellung von einem vorherigen erfolgreichen Prüfpunkt beginnen.

Ereignisse, die Prüfpunkte auslösen

Vor einer Datenbanksicherung führt Database Engine (Datenbankmodul) automatisch einen Prüfpunkt aus, sodass alle Änderungen an den Datenbankseiten in der Sicherung enthalten sind. Automatische Prüfpunkte treten auch auf, wenn eine der folgenden Bedingungen zutrifft:

  • Der aktive Abschnitt des Protokolls überschreitet die Größe, die der Server in der über die Serverkonfigurationsoption recoveryinterval angegebenen Zeit wiederherstellen kann.

  • Das Protokoll ist zu 70 % voll, und die Datenbank befindet sich im Protokollabschneidemodus.

    Eine Datenbank befindet sich im Protokollabschneidemodus, wenn die beiden folgenden Bedingungen zutreffen (TRUE): Die Datenbank verwendet das einfache Wiederherstellungsmodell, und eines der folgenden Ereignisse tritt auf, nachdem die letzte BACKUP DATABASE-Anweisung, die auf die Datenbank verwiesen hat, ausgeführt wurde:

    • Ein minimal protokollierter Vorgang wird in der Datenbank ausgeführt, z. B. ein minimal protokollierter Massenkopiervorgang, oder eine minimal protokollierte WRITETEXT-Anweisung wird ausgeführt.

    • Eine ALTER DATABASE-Anweisung, die der Datenbank eine Datei hinzufügt oder eine Datei daraus löscht, wird ausgeführt.

Darüber hinaus wird beim Anhalten eines Servers ein Prüfpunkt in jeder Datenbank auf dem Server ausgeführt. Bei den folgenden Methoden zum Anhalten von SQL Server werden Prüfpunkte für jede Datenbank ausgeführt:

  • Verwenden von SQL Server-Konfigurations-Manager.

  • Verwenden von SQL Server Management Studio.

  • Verwenden der SHUTDOWN-Anweisung.

HinweisHinweis

Mit der SHUTDOWN WITH NOWAIT-Anweisung kann SQL Server heruntergefahren werden, ohne dass Prüfpunkte in jeder Datenbank ausgeführt werden. Der folgende Neustart nimmt dann möglicherweise mehr Zeit als gewöhnlich zum Wiederherstellen der Datenbanken auf dem Server in Anspruch.

  • Verwenden des Befehls net stop mssqlserver in einer Eingabeaufforderung.

  • Verwenden von Dienste in der Systemsteuerung, Auswählen von mssqlserver und Klicken auf Anhalten.

  • Offlineschalten einer Instanz in einem Cluster.

Faktoren, die sich auf die Dauer von Prüfpunktvorgängen auswirken

Im Allgemeinen erhöht sich die für einen Prüfpunktvorgang benötigte Zeit mit der Anzahl der modifizierten Seiten, die geschrieben werden müssen. Die Auswirkungen auf die Leistung anderer Anwendungen werden minimiert, da SQL Server standardmäßig die Häufigkeit der vom Prüfpunktvorgang ausgeführten Schreibvorgänge anpasst. SQL Server verwendet diese Strategie für automatische Prüfpunkte und für alle CHECKPOINT-Anweisungen, die keinen checkpoint_duration-Wert angeben. Durch das Verringern der Schreibhäufigkeit wird die Zeit erhöht, die zum Abschließen des Prüfpunktvorgangs erforderlich ist.

Mithilfe von checkpoint_duration können Sie anfordern, dass der Prüfpunktvorgang in einem bestimmten Zeitraum abgeschlossen wird. Die Auswirkungen auf die Leistung durch checkpoint_duration hängen von der Anzahl der modifizierten Seiten, der Aktivität im System und der angegebenen tatsächlichen Dauer ab. Wenn der Prüfpunkt z. B. normalerweise innerhalb von 120 Sekunden abgeschlossen wird, wird durch Angabe eines checkpoint_duration-Werts von 45 Sekunden SQL Server dazu veranlasst, mehr Ressourcen für den Prüfpunkt zur Verfügung zu stellen, als gemäß der Standardeinstellung zugewiesen sind. Durch Angabe eines checkpoint_duration-Werts von 180 Sekunden hingegen wird SQL Server dazu veranlasst, weniger Ressourcen zuzuweisen als standardmäßig vorgesehen. Im Allgemeinen gilt, dass bei einem niedrigen checkpoint_duration-Wert die Ressourcenverwendung für den Prüfpunkt erhöht wird, während bei einem hohen checkpoint_duration-Wert weniger Ressourcen für den Prüfpunkt benötigt werden. Ein Prüfpunkt wird von SQL Server nach Möglichkeit immer abgeschlossen, und die CHECKPOINT-Anweisung gibt sofort nach Abschluss des Prüfpunkts einen entsprechenden Wert zurück. Aus diesem Grund kann ein Prüfpunkt sowohl vor Ablauf des angegebenen Zeitraumes abgeschlossen werden als auch länger als angegeben benötigen.

Berechtigungen

Die CHECKPOINT-Berechtigungen sind standardmäßig Mitgliedern der festen Serverrolle sysadmin und der festen Datenbankrolle db_owner und db_backupoperator zugewiesen und nicht übertragbar.