2009-06-08 19 views
7

Normalmente utilizzo transazioni completamente esplicite nei miei processi memorizzati (BEGIN TRANSACTION .... COMMIT). Ho appena imbattuto in una vecchia che invece utilizza "CHECKPOINT" in certi punti del codice.CHECKPOINT funziona come COMMIT in TSQL?

Questo non farà la stessa cosa, giusto ?? Anche se il database è in modalità semplice, l'intera operazione verrà comunque eseguita come un'unica grande transazione, anche se un gruppo di CHECKPOINTS è bloccato nel mezzo?

risposta

7

No.

CHECKPOINT diversa e autonoma di impegnarsi/ripristino.

questo articolo viene illustrato "SQL Server 2000 I/O Basics" (ancora ok per SQL Server 2005, ecc).

  • È possibile punto di controllo e scrivere su disco, ma in seguito far ritirare

  • Il BEGIN/COMMIT è niente a che fare con il modello di recupero (completo, semplice, di massa registrato). Il TXN deve completare o fallire come uno.

  • In caso di interruzione dell'alimentazione, i dati possono essere caricati su disco a causa di un CHECKPOINT ma non vengono trasmessi, pertanto viene eseguito il rollback come parte dell'avvio del database.

In passato, era utilizzato per try and "empty" the log of committed entries per il modello di ripristino semplice. CHECKPOINT li ha scartati. Per il modello di recupero FULL, è necessario il BACKUP LOG.