CHECKPOINT (Transact-SQL)
Écrit sur le disque toutes les pages incorrectes de la base de données active. Les Pages incorrectes sont des pages de données qui ont été entrées dans le cache des tampons et qui y sont modifiées mais ne sont pas encore écrites sur le disque. Les points de contrôle permettent une récupération ultérieure plus rapide du système en créant un point où toutes les pages incorrectes sont effectivement écrites sur le disque.
Syntaxe
CHECKPOINT [ checkpoint_duration ]
Arguments
checkpoint_duration
Spécifie le temps requis (en secondes) pour terminer le point de contrôle. Lorsque l'option checkpoint_duration est spécifiée, le moteur de base de données SQL Server tente de réaliser un point de contrôle dans le laps de temps imparti. checkpoint_duration doit être une expression du type int et sa valeur doit être supérieure à zéro. Lorsque ce paramètre est omis, le moteur de base de données SQL Server règle automatiquement la durée du point de contrôle pour minimiser l'impact sur les performances des applications de base de données.[!REMARQUE]
Dans SQL Server 2000, la plage de temps prévue pour le processus du point de contrôle était définie par le paramètre RECOVERY INTERVAL de la procédure sp_configure.
Notes
Pour des raisons de performances, le moteur de base de données procède aux modifications des pages de base de données en mémoire sans les écrire à chaque fois sur le disque. Il doit cependant effectuer régulièrement des points de contrôle pour écrire les pages incorrectes sur le disque. Cette opération permet ainsi la création d'un point de référence connu et fiable à partir duquel le moteur de base de données peut, lors d'une récupération faisant suite à une panne ou à un arrêt imprévu, commencer à appliquer les modifications contenues dans le journal. Pour plus d'informations, consultez Points de contrôle et partie active du journal.
Les points de contrôle peuvent s'effectuer simultanément sur un nombre illimité de bases de données.
Le moteur de base de données ne peut pas procéder à une récupération à partir d'un point de contrôle interrompu. Si le cas se présente, il ne débute la récupération qu'à partir d'un point de contrôle précédemment réussi.
Événements déclenchant des points de contrôle
Avant la sauvegarde d'une base de données, le moteur de base de données effectue systématiquement un point de contrôle pour que toutes les modifications apportées aux pages de base de données soient contenues dans la sauvegarde. Par ailleurs, des points de contrôle sont automatiquement réalisés lorsque l'une des conditions suivantes se produit :
La taille de la portion active du journal est supérieure à celle que le serveur est capable de récupérer durant la durée impartie qui a été spécifiée dans l'option de configuration de serveur recoveryinterval.
Le journal est rempli à 70 % alors que le mode journal tronqué est activé dans la base de données.
Une base de données est en mode journal tronqué lorsque les deux conditions suivantes sont vérifiées (TRUE) : la base de données utilise le mode de récupération simple et l'un des événements suivants survient après l'exécution de la dernière instruction BACKUP DATABASE référencée dans la base de données :
exécution d'une opération journalisée minimale dans la base de données, par exemple une copie en bloc ou l'exécution d'une instruction WRITETEXT ;
exécution d'une instruction ALTER DATABASE qui ajoute ou supprime un fichier dans la base de données ;
De même, l'arrêt d'un serveur déclenche la réalisation d'un point de contrôle dans chaque base de données de ce serveur. Les méthodes suivantes permettent d'empêcher que SQL Server exécute un point de contrôle dans chaque base de données :
Utilisation du Gestionnaire de configuration SQL Server
utilisation de SQL Server Management Studio ;
utilisation de l'instruction SHUTDOWN ;
[!REMARQUE]
L'instruction SHUTDOWN WITH NOWAIT arrête SQL Server sans exécuter de point de contrôle dans les bases de données. Lors du redémarrage suivant, la récupération des bases de données sur le serveur peut nécessiter davantage de temps.
utilisation de la commande net stop mssqlserver dans une fenêtre d'invite de commandes ;
utilisation des Services du Panneau de configuration, en sélectionnant mssqlserver, puis en cliquant sur Arrêter ;
mise d'une instance hors connexion dans un cluster.
Facteurs ayant une incidence sur la durée des opérations de point de contrôle
En règle générale, le temps nécessaire à la réalisation d'un point de contrôle augmente avec le nombre de pages incorrectes à écrire. Pour réduire au minimum l'impact sur les performances des autres applications, SQL Server ajuste par défaut la fréquence d'écriture d'une opération de point de contrôle. SQL Server utilise cette stratégie pour les points de contrôle automatiques et pour toute instruction CHECKPOINT dont la valeur du paramètre checkpoint_duration n'est pas spécifiée. La diminution de la fréquence d'écriture augmente la durée de l'opération de point de contrôle.
Vous pouvez utiliser checkpoint_duration pour spécifier la durée d'exécution du point de contrôle. L'incidence de l'utilisation du paramètre checkpoint_duration sur les performances dépend du nombre de pages incorrectes, de l'activité sur le système et de la durée réelle spécifiée. Par exemple, si le point de contrôle s'effectue normalement en 120 secondes, le fait de définir la valeur de checkpoint_duration à 45 secondes oblige SQL Server à allouer davantage de ressources que l'application en attribuerait par défaut. À l'inverse, une valeur de 180 secondes permet à SQL Server d'attribuer moins de ressources que ce qui serait attribué par défaut. En règle générale, une valeur faible pour checkpoint_duration augmente les ressources attribuées au point de contrôle tandis qu'une durée checkpoint_duration plus longue les réduit. SQL Server effectue toujours un point de contrôle lorsque cela est possible et l'instruction CHECKPOINT renvoie immédiatement les informations lorsqu'un point de contrôle se termine. Ainsi, dans certains cas, un point de contrôle peut se terminer avant ou après que la durée spécifiée soit écoulée.
Autorisations
Les autorisations de CHECKPOINT sont accordées par défaut aux membres du rôle serveur fixe sysadmin et aux membres des rôles de base de données fixes db_owner et db_backupoperator ; elles ne sont pas transférables.