Condividi tramite


Recupero fino a una transazione contrassegnata

Le informazioni contenute in questo argomento sono rilevanti solo per i database che includono transazioni contrassegnate e utilizzano il modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk.

Per informazioni sui requisiti per il ripristino fino a un punto di recupero specifico, vedere Ripristino di un database fino a un punto all'interno di un backup.

In SQL Server è possibile inserire contrassegni denominati nel log delle transazioni per eseguire recuperi fino a un punto specifico. I contrassegni del log sono specifici della transazione e vengono inseriti solo se viene eseguito il commit della transazione associata. In questo modo, i contrassegni risultano legati a serie di operazioni specifiche ed è possibile eseguire il recupero includendo o escludendo le serie di operazioni desiderate.

Prima di inserire contrassegni denominati nel log delle transazioni, tenere presente quanto segue:

  • I contrassegni di transazione occupano spazio nei log e pertanto è consigliabile utilizzarli esclusivamente per transazioni importanti ai fini della strategia di recupero dei database.

  • Dopo il commit di una transazione contrassegnata, viene inserita una riga nella tabella logmarkhistory del database msdb.

  • Se una transazione contrassegnata si estende su più database dello stesso server o di più server, i contrassegni devono essere registrati nei log di tutti i database interessati. Per ulteriori informazioni, vedere Utilizzo delle transazioni contrassegnate (modello di recupero con registrazione completa).

[!NOTA]

Per informazioni sul contrassegno delle transazioni, vedere Utilizzo delle transazioni contrassegnate (modello di recupero con registrazione completa).

Sintassi Transact-SQL per l'inserimento di contrassegni denominati in un log delle transazioni

Per inserire contrassegni nei log delle transazioni, utilizzare l'istruzione BEGIN TRANSACTION e la clausola WITH MARK [description]. Al contrassegno viene assegnato lo stesso nome della transazione. L'argomento description facoltativo è una descrizione del contrassegno e non corrisponde al nome del contrassegno. Il nome sia della transazione sia del contrassegno creato nell'istruzione BEGIN TRANSACTION seguente è ad esempio Tx1:

BEGIN TRANSACTION Tx1 WITH MARK 'not the mark name, just a description'  

Nel log delle transazioni vengono registrati il nome del contrassegno (il nome della transazione), la descrizione, il database, l'utente, le informazioni di tipo datetime e il numero di sequenza del file di log (LSN). Per l'identificazione univoca del contrassegno, il nome viene associato alle informazioni datetime.

Per informazioni sull'inserimento di un contrassegno in una transazione che si estende su più database, vedere Utilizzo delle transazioni contrassegnate (modello di recupero con registrazione completa).

Sintassi Transact-SQL per il recupero fino a un contrassegno

Quando si specifica una transazione contrassegnata in un'istruzione RESTORE LOG, è possibile utilizzare una delle clausole seguenti per interrompere l'operazione in corrispondenza del contrassegno o immediatamente prima di esso:

  • Utilizzare la clausola WITH STOPATMARK ='<mark_name>' per specificare che il punto di recupero corrisponde alla transazione contrassegnata.

    STOPATMARK esegue il rollforward fino al contrassegno, includendovi la transazione contrassegnata.

  • Utilizzare la clausola WITH STOPBEFOREMARK = '<mark_name>' per specificare che il punto di recupero corrisponde al record del log immediatamente precedente al contrassegno.

    STOPBEFOREMARK esegue il rollforward fino al contrassegno, escludendo la transazione contrassegnata.

Entrambe le opzioni STOPATMARK e STOPBEFOREMARK supportano una clausola AFTER datetime facoltativa. Quando viene utilizzata la clausola datetime, non è necessario che i nomi dei contrassegni siano univoci.

Se AFTER datetime viene omesso, il rollforward viene interrotto in corrispondenza del primo contrassegno con il nome specificato. Se AFTER datetime viene specificato, il rollforward viene interrotto in corrispondenza del primo contrassegno con il nome specificato, nella data e ora indicate in datetime o in un momento successivo.

[!NOTA]

Come per tutte le operazioni di ripristino temporizzato, il recupero fino a un contrassegno è disattivato quando nel database sono in corso operazioni con registrazione minima delle operazioni bulk.

Per ripristinare una transazione contrassegnata

Procedura: Ripristino di un database fino a una transazione contrassegnata (SQL Server Management Studio)

RESTORE (Transact-SQL)

Preparazione dei backup del log

In questo esempio, una strategia di backup appropriata per i database correlati potrebbe essere la seguente:

  1. Utilizzare il modello di recupero con registrazione completa per entrambi i database.

  2. Creare un backup completo di ogni database.

    È possibile eseguire il backup dei database in sequenza o simultaneamente.

  3. Prima di eseguire il backup del log delle transazioni, contrassegnare una transazione che viene eseguita in tutti i database. Per informazioni sulla creazione di transazioni contrassegnate, vedere Utilizzo delle transazioni contrassegnate (modello di recupero con registrazione completa).

  4. Eseguire il backup del log delle transazioni in ogni database.

Recupero del database fino a una transazione contrassegnata

Per ripristinare il backup

  1. Se possibile, creare backup della parte finale del log per i database non danneggiati.

  2. Ripristinare il backup completo più recente di ogni database.

  3. Individuare la transazione contrassegnata più recente disponibile in tutti i backup del log delle transazioni. Questa informazione è archiviata nella tabella logmarkhistory del database msdb in ogni server.

  4. Individuare i backup del log di tutti i database correlati che contengono questo contrassegno.

  5. Ripristinare ogni backup del log fino alla transazione contrassegnata.

  6. Recuperare ogni database.