CHECKPOINT (Transact-SQL)

Escribe en el disco todas las páginas desfasadas de la base de datos actual. Las páginas desfasadas son páginas de datos que se han incluido en la memoria caché del búfer y se han modificado, pero todavía no se han escrito en el disco. Los puntos de comprobación permiten ahorrar tiempo en una recuperación posterior al crear un punto en el que se garantiza que todas las páginas desfasadas se hayan escrito en el disco.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

CHECKPOINT [ checkpoint_duration ]

Argumentos

  • checkpoint_duration
    Especifica la cantidad de tiempo necesaria, en segundos, para que se complete el punto de comprobación. Si se especifica checkpoint_duration, SQL Server Database Engine (Motor de base de datos de SQL Server) intenta realizar el punto de comprobación dentro de la duración solicitada. checkpoint_duration debe ser una expresión de tipo int y debe ser mayor que cero. Cuando se omite este parámetro, SQL Server Database Engine (Motor de base de datos de SQL Server) ajusta automáticamente la duración del punto de comprobación para minimizar el impacto en el rendimiento de las aplicaciones de base de datos.

    [!NOTA]

    En SQL Server 2000, el intervalo de tiempo para el proceso de puntos de comprobación se basaba en el parámetro RECOVERY INTERVAL de sp_configure.

Notas

Por motivos de rendimiento, el Database Engine (Motor de base de datos) realiza modificaciones en las páginas de la base de datos en memoria y no escribe la página en el disco después de cada cambio. No obstante, el Database Engine (Motor de base de datos) necesita ejecutar periódicamente un punto de comprobación para escribir estas páginas desfasadas en el disco. La escritura de páginas desfasadas en el disco crea un buen punto conocido desde donde el Database Engine (Motor de base de datos) puede empezar a aplicar cambios incluidos en el registro durante la recuperación después de un cierre inesperado o un bloqueo del sistema. Para obtener más información, vea Puntos de comprobación y la parte activa del registro.

Los puntos de comprobación pueden tener lugar simultáneamente en un número indeterminado de bases de datos.

El Database Engine (Motor de base de datos) no puede recuperarse si un punto de comprobación se ha interrumpido. Si un punto de comprobación se interrumpe y se precisa recuperación, el Database Engine (Motor de base de datos) debe iniciar la recuperación desde un punto de comprobación anterior correcto.

Eventos que provocan puntos de comprobación

Antes de realizar una copia de seguridad de una base de datos, el Database Engine (Motor de base de datos) ejecuta automáticamente un punto de comprobación para que todos los cambios realizados en las páginas de la base de datos se incluyan en la copia de seguridad. Además, los puntos de comprobación tienen lugar automáticamente cuando se produce una de las condiciones siguientes:

  • La parte activa del registro supera el tamaño que el servidor puede recuperar en el período de tiempo especificado en la opción de configuración del servidor recoveryinterval.

  • Se llena un 70 % del registro y la base de datos está en modo truncar el registro.

    Una base de datos se encuentra en el modo de truncamiento de registro cuando las dos condiciones siguientes son ciertas: la base de datos utiliza el modelo de recuperación simple y, después de ejecutar la última instrucción BACKUP DATABASE que hacía referencia a la base de datos, se produce uno de los siguientes eventos:

    • Se realiza una operación registrada al mínimo en la base de datos, por ejemplo, una operación de copia masiva registrada al mínimo, o se ejecuta una instrucción WRITETEXT registrada al mínimo.

    • Se ejecuta una instrucción ALTER DATABASE que agrega o elimina un archivo de la base de datos.

Asimismo, detener un servidor emite un punto de comprobación en cada una de las bases de datos del servidor. Los siguientes métodos para detener SQL Server ejecutan puntos de comprobación para cada base de datos:

  • Usar el Administrador de configuración de SQL Server.

  • Usar SQL Server Management Studio.

  • Usar la instrucción SHUTDOWN.

[!NOTA]

La instrucción SHUTDOWN WITH NOWAIT cierra SQL Server sin ejecutar un punto de comprobación en cada una de las bases de datos. Esto puede hacer que la duración de la recuperación de las bases de datos del servidor en el siguiente reinicio sea más larga de lo habitual.

  • Usar el comando net stop mssqlserver en una ventana del símbolo del sistema.

  • Usar Servicios en el Panel de control seleccionando mssqlserver y haciendo clic en Detener.

  • Poner una instancia sin conexión en un clúster.

Factores que afectan a la duración de las operaciones de puntos de comprobación

Generalmente, el tiempo que requiere una operación de punto de comprobación aumenta con el número de páginas desfasadas que la operación debe escribir. Para minimizar el impacto en el rendimiento de otras aplicaciones, SQL Server ajusta de forma predeterminada la frecuencia de las escrituras realizadas por una operación de punto de comprobación. SQL Server utiliza esta estrategia para puntos de comprobación automáticos y para cualquier instrucción CHECKPOINT que no especifique un valor de checkpoint_duration. Reducir la frecuencia de escritura incrementa el tiempo que la operación de punto de comprobación necesita para completarse.

Puede utilizar checkpoint_duration para solicitar que una operación de punto de comprobación se complete en un espacio de tiempo determinado. El impacto que checkpoint_duration tiene en el rendimiento dependerá del número de páginas desfasadas, la actividad del sistema y la duración real especificada. Por ejemplo, si el punto de comprobación normalmente se completa en 120 segundos, especificar un valor de 45 segundos para checkpoint_duration hará que SQL Server destine más recursos al punto de comprobación de los que asignaría de forma predeterminada. Por el contrario, si se especifica un valor de 180 segundos para checkpoint_duration, SQL Server destinará un número inferior de recursos de los que asignaría de forma predeterminada. Generalmente, un valor bajo de checkpoint_duration incrementará el número de recursos destinados al punto de comprobación, mientras que un valor elevado de checkpoint_duration lo reducirá. SQL Server siempre completa los puntos de comprobación si es posible, y la instrucción CHECKPOINT devuelve un valor inmediatamente cuando finaliza un punto de comprobación. Por tanto, en algunos casos, un punto de comprobación puede llevar más o menos tiempo que la duración especificada.

Permisos

De forma predeterminada, disponen de permisos de CHECKPOINT los miembros de la función fija de servidor sysadmin y de las funciones de base de datos fijas db_owner y db_backupoperator; estos permisos no se pueden transferir.