Ricreare il Transact Log di un DB SQL 2005

lunedì 03 agosto 2009 - 16.09

rbiagiola Profilo | Newbie

Ciao a tutti,
ho una problematica piuttosto strana e antipatica da risolvere...
Non riesco a ripristinare un file .bak.
La procedura di ripristino arriva al completamento del 100% ma poi esce il seguente errore...
"Errore durante l'elaborazione del Log. Se possibile ripristinarlo da un backup Se non è disponibile un backup ricreare il log."

Dopo aver ripristinato il DB stoppando i servizi SQL e sostituendo i file mdf e ldf ho riprovato a backappare di nuovo l'archivio e ripristinarlo ma niente da fare. Sembrerebbe proprio un problema legato al log!!! Girando in vari forum ho provato diverse procedure di ripristino e di recupero del file log, ma senza successo.
Una particolarità che ho notato è che il file ldf è tremendamente grosso (quasi 2 Gb.), e non riesco a troncarlo in nessuna maniera.
Neanche il BACKUP LOG WITH TRUNCATE_ONLY.
Esiste un'applicazione che potrebbe aiutarmi a ricostruire il file di log e quindi a recuperare l'archivio?!?!

Grazie per l'attenzione... spero possiate aiutarmi!

lbenaglia Profilo | Guru

>Dopo aver ripristinato il DB stoppando i servizi SQL e sostituendo
>i file mdf e ldf
In che senso " sostituendo i file mdf e ldf"?
Puoi spiegare meglio questo passaggio?

>Girando in vari forum ho provato diverse procedure
>di ripristino e di recupero del file log, ma senza successo.
Quali?

>Una particolarità che ho notato è che il file ldf è tremendamente
>grosso (quasi 2 Gb.), e non riesco a troncarlo in nessuna maniera.
>Neanche il BACKUP LOG WITH TRUNCATE_ONLY.
Questo comando NON ridimensiona il T-Log, ma occorre eseguire sucessivamente una DBCC SHRINKFILE.

>Grazie per l'attenzione... spero possiate aiutarmi!
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

rbiagiola Profilo | Newbie

Il DB in questione è già on line... quindi per cercare di ripristinarlo su un altra macchina ho dovuto creare un nuovo database, fermare i servizi dell'istanza SQL, copiare i file mdf e ldf dall'archivio incriminato e sostituirli con i file mdf e ldf del nuovo db creato.
Questa per ora è l'unico modo che ho trovato per ripristinare l'archivio... ma resta il fatto che effettuando il backup full da manager non riesco a ripristinarlo... e questo è un gran casino se dovessi spaccare il DB!!!

Ho provato senza successo i seguenti comandi da SQL per troncare il log:
----------------------------
USE REFTEG
GO
DBCC SHRINKFILE('REFTEG_log', 2)
BACKUP LOG dbtegstudio WITH TRUNCATE_ONLY
DBCC SHRINKFILE('REFTEG_log', 2)
SELECT file_id, name FROM sys.database_files
----------------------------

ho provato anche a fare questa istruzione che ho trovato su alcuni post on line:
----------------------------
ALTER DATABASE REFTEG

SET single_user WITH ROLLBACK IMMEDIATE;
GO
DBCC checkdb ('REFTEG', repair_allow_data_loss);
GO
-----------------------------

Il risultato è sempre stato negativo!
Ora vorrei chiedere se non dovessi riuscire a recuperare quel file LOG... come posso ricrearlo?!?!
(L'errore di Windows mi suggerisce di farlo... ma non mi specifica come!! :))

Grazie ancora!

lbenaglia Profilo | Guru

>Il DB in questione è già on line... quindi per cercare di ripristinarlo
>su un altra macchina ho dovuto creare un nuovo database, fermare
>i servizi dell'istanza SQL, copiare i file mdf e ldf dall'archivio
>incriminato e sostituirli con i file mdf e ldf del nuovo db creato.
Perché non hai ripristinato un normalissimo full backup senza creare preventivamente alcun db?

>Questa per ora è l'unico modo che ho trovato per ripristinare
>l'archivio...
Male dato che hai sperimentato sulla tua pelle che non funziona

>ma resta il fatto che effettuando il backup full
>da manager non riesco a ripristinarlo...
Perché? Che problemi riscontri?

>Grazie ancora!
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

rbiagiola Profilo | Newbie

Non riesco a effettuare il normale ripristino da manager!!!
L'errore che mi viene gentilmente offerto da SLQ quando provo a ripristinare l'ho allegato a questo post!!! :)


606x185 21Kb


Spero possa essere utile...
Thanks



lbenaglia Profilo | Guru

>Spero possa essere utile...
Beh, quel backup è corrotto.
Non puoi eseguire una DBCC CHECKDB sul db di origine risolvendo eventuali problemi ed un nuovo full backup?

>Thanks
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

rbiagiola Profilo | Newbie

Della serie... "Duro a Morire".. ho riprovato a ripetere tutte le procedure per poter aiutare anche chi legge ad avere un quadro più completo!
Allora:

1. Eseguo un BACKUP FULL da Manager.
2. Ripristino da manager il file .bak creato ma arrivato quasi al completamento del processo mi da il seguente errore.


606x185 21Kb


3. Eseguo il seguente comando in SIngle User
DBCC CHECKDB ('dbtegstudio', repair_allow_data_loss)
Risultato: Errore su una tabella che provvedo subito ad eliminarla ed a ricrearla:
Eseguo nuovamente il comando
DBCC CHECKDB ('dbtegstudio', repair_allow_data_loss)
Risultato: Operazione conclusa con successo! (Evvaiii!!!)

4. Eseguo un nuovo BACKUP FULL da Manager
5. Provo il ripristino da Manager, ma come prima si inchioda sul più bello. Ho un errore diverso ora:


611x175 24Kb


6. Effettuo un nuovo Backup Full stavolta da riga di comando:
BACKUP DATABASE dbtegstudio TO disk ='C:\dbtegtudio_full.bak' WITH CONTINUE_AFTER_ERROR

7. Provo a ripristinare di nuovo il DB ma niente.... Punto e a capo. Ancora il seguente errore:


606x185 21Kb


8. Non sapendo più che pesci pigliare... o mi metto a mangiare carne oppure mi tocca aspettare un qualche genio di questo forum che possa darmi un aiuto!

Grazie ancora... :)

lbenaglia Profilo | Guru

>8. Non sapendo più che pesci pigliare... o mi metto a mangiare
>carne oppure mi tocca aspettare un qualche genio di questo forum
>che possa darmi un aiuto!
Ti suggerisco di farti una fiorentina da 2Kg
Il db "di produzione" dal quale esegui il backup è corrotto, quindi io non dormirei sonni tranquilli
Hai un backup valido del db in uno stato consistente?

Diversamente io proverei a creare un nuovo db rigenerando tutti gli oggetti (tabelle, indici, constraint, stored procedures, triggers, ecc.) via script e copiando i dati tabella per tabella.
Se ti va bene riuscirai a copiare gran parte delle righe, perdendo eventualmente quelle corrotte.

Esegui anche una scansione del file system del volume che contiene i database...

>Grazie ancora... :)
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

rbiagiola Profilo | Newbie

Hai proprio ragione! Credo che mi toccherà mangiare una bella fiorentina!!!
Credo che faro uno script di tutto il Db... e ricreerò l'archivio.
Grazie... buone vacanze!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5