2009-06-08 10 views
7

normalmente uso transacciones totalmente explícitas en mis procedimientos almacenados (BEGIN TRANSACTION .... COMMIT). Me topé con uno viejo que en su lugar usa "CHECKPOINT" en ciertos lugares del código.¿CHECKPOINT funciona igual que COMMIT en TSQL?

Esto no va a hacer lo mismo, ¿no ?? Incluso si la base de datos está en modo simple, todo el asunto todavía se ejecuta como una transacción grande, incluso con un montón de puntos de control atrapados en el medio?

Respuesta

7

No.

CHECKPOINT es diferente e independiente para cometer/reversión.

En este artículo se demuestra "SQL Server 2000 I/O Basics" (todavía no está mal para SQL Server 2005, etc.).

  • Puede puesto de control y escribir en el disco, pero posteriormente deshacer

  • El BEGIN/COMMIT es nada que ver con el modelo de recuperación (completa, sencilla, mayor registrada). El TXN debe completarse o fallar como uno.

  • En caso de, por ejemplo, falla de alimentación, los datos pueden aparecer en el disco debido a un PUNTO DE CONTROL pero no están confirmados, por lo que se retrotraen como parte del inicio de la base de datos.

En los días antiguos, se utiliza para try and "empty" the log of committed entries para el modelo de recuperación simple. CHECKPOINT los descartó. Para el modelo de recuperación COMPLETA, necesitaría BACKUP LOG.

Cuestiones relacionadas