Quando aggiungere un file di log è l’unica soluzione

Se nel vostro DB in SQL Server vi trovate di fronte all’errore “The following SQL error was unexpected: The transaction log for database ‘xyz’ is full due to ‘ACTIVE_TRANSACTION'” e nel log eventi di SQL server vi trovate di fronte a errori del tipo Error 9002, severity 17, state 4: The transaction log for database ‘xyz’ is full due to ‘ACTIVE_TRANSACTION’, è possibile che siate in un “cul de sac”.

Non potete fare il backup, non potete estendere il file (nel senso che non lo potete alterare) e siete già preoccupati per l’integrità.

Aggiungete un nuovo file di log, tanto poi lo potrete rimuovere, così risolvete il problema; questa è la parte semplice e immediata, ma se avete istanze replicate per il disaster recovery, il problema potrebbe essere più complicato.

Quando andrete a restorare il file di log delle transazioni, vi ritroverete di fronte a un errore del tipo: “non posso restorare il log perchè non trovo il file <nuovofilecheaveteaggiunto>“.

Per risolvere il problema dovete fare così:

  1. prima leggete l’elenco dei file presenti nel log delle transazioni: RESTORE FILELISTONLY FROM DISK = N'<percorsodelfiledilog>';
  2. dall’elenco dei file isentificate il nome logico del file che avete aggiunto nel DB di produzione e che manca nall’istanza replicata;
  3. eseguite il restore del log con l’opzione move: RESTORE LOG <nomedatabase> FROM DISK = N'<percorsodelfiledilog>' WITH NORECOVERY, MOVE '<nomelogicodelnuovofile>' TO '<percorsofisicodelfiledacreare>‘.

Questo risolve il problema!

 


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *