SQL SERVER 2005 (Backup e File MioDb_log.ldf di 7.5 Gb )

venerdì 05 settembre 2008 - 10.06

ciccios100 Profilo | Junior Member

Buon giorno a tutti,
ragazzi vi volevo chiedere consiglio per un piccolo problema che ho con i backup di un mio database in SQL serveer 2005. Ogni sera alle 23.00 faccio un backup completo del mio db. Ogni giorno alle 15 archivio i backup in unità esterne e li cancello dal disco fisso. I miei DB sono su un server SBS che backuppo in maniera completa ogni settimana. Andando a backuppare il server SBS mi sono accorto della smisurata dimensione di un file C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\Data\MioDb_log.ldf che ha raggiunto i 7.5 Gb ma il backup del file MioDb.bak e di circa 300 mb. A questo punto il mio problema è perche ho questo file di dimensioni cosi grandi?Il file .ldf non dovrebbe essere azzerato automaticamente con un backup completo o c'è da aggiungere qualche istruzione a quella che utilizzo per fare i backup? e inoltre se così fosse i file di log possono essere cancellati dopo aver fatto un bakup completo senza rischio di perdere informazioni,vero?
Ringrazio in anticipo tutti coloro vorranno darmi questo aiuto, ciao e tutti
Ciccio
>>Domandare è lecito,rispondere è cortesia

sanbiz Profilo | Senior Member

Prova a dare un'occhiata a questo articolo

http://www.dotnethell.it/tips/ShrinkTLOGSql2000.aspx
--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

ciccios100 Profilo | Junior Member

Ciao Sandro,
Ho dato un occhiata alla pagina che mi hai linkato, e volevo porti alcune domande in base a dei dubbi che ho. A quanto ho capito, nel mio caso, ogni sera quando faccio il Full Backup del mio DB, viene effettuata un operazione di checkpoint che scrive fisicamente le transazioni concluse sul mio db. Quindi nel file .bak che creo vengono inserite tutte le transazioni completate, mentre in caso di crash del mio db, e successivo restore le transazioni non ancora completate verranno perse,giusto? A questo punto, sempre se ho capito bene, modificando la mia istruzione di backup in:

BACKUP MioDb WITH NO_LOG
BACKUP DATABASE MioDb
TO DISK = 'D:\BACKUP_SQL\MioDb.bak'

Dovrei fare un backup del db e pulire contemporaneamente il file MioDb_log.ldf. Per completare il tutto dovrei eseguire in seguito il comando DBCC SHRINKFILE() sul mio MioDb.mdf . Così facendo dovrei farei un backup del database eliminando dal file di log tutte le transazioni concluse,ma mantenendo intatti tutti i dati(anche quelli relativi le transazioni non concluse)giusto?
Ti ringrazio in anticipo per l’aiuto, ciao ciao

Ciccio
>>Domandare è lecito,rispondere è cortesia

lbenaglia Profilo | Guru

>Il file .ldf non dovrebbe essere azzerato automaticamente
>con un backup completo o c'è da aggiungere qualche istruzione
>a quella che utilizzo per fare i backup?
No, se utilizzi un recovery model diverso da SIMPLE, l'unico modo per evitare che il t-log cresca a dismisura è quello di eseguire un BACKUP LOG. Un full database backup non impedisce la crescita del t-log.

>e inoltre se così fosse
>i file di log possono essere cancellati dopo aver fatto un bakup
>completo senza rischio di perdere informazioni,vero?
NO, MAI, IN NESSUN CASO se non vuoi ritrovarti con un database corrotto!

>Ringrazio in anticipo tutti coloro vorranno darmi questo aiuto,
Prego.

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

lbenaglia Profilo | Guru

>Dovrei fare un backup del db e pulire contemporaneamente il
>file MioDb_log.ldf. Per completare il tutto dovrei eseguire in
>seguito il comando DBCC SHRINKFILE() sul mio MioDb.mdf . Così
>facendo dovrei farei un backup del database eliminando dal file
>di log tutte le transazioni concluse,ma mantenendo intatti tutti
>i dati(anche quelli relativi le transazioni non concluse)giusto?

La tua politica di backup prevede il backup del t-log in modo da poter eseguire recovery point-in-time?
Se ti accontenti di recuperare i dati all'ultimo full backup o differenziale, imposta il recovery model del db a SIMPLE e vivi felice

>Ti ringrazio in anticipo per l’aiuto, ciao ciao
Prego.

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

ciccios100 Profilo | Junior Member

Ciao Lorenzo,
>La tua politica di backup prevede il backup del t-log in modo
>da poter eseguire recovery point-in-time?
No,faccio solo un backup full la sera alle 23 (i dati inseriti nel Db non sono di importanza vitale per l'azienda)
>Se ti accontenti di recuperare i dati all'ultimo full backup o differenziale, imposta il recovery model del db a SIMPLE e vivi felice
Si, direi che è proprio che è il mio caso….
Solo che vorrei fare una cosa del genere(non so se sia possibile, o se il recovery model Simple faccia una cosa del genere in automatico).
Prima di lanciare il backup vorrei far scaturire un processo di checkpoint per scrivere fisicamente le transazioni concluse sul DB, in modo che nel db che vado a backuppare la sera ci siano tutti i dati che sono stati inseriti nel DB fino alle 18.00, e poi vorrei lanciare il backup del MioDb (impostando su questo il recovery model a simple in modo da non incorrere più nel problema del file di log ). La cosa è fattibile o sto dicendo solo un sacco di fesserie?e se la cosa è fattibile come faccio a far scaturire questo processo di checkpoint? Solo con il backup del file si log?
Grazie mille per l’aiuto

Ciccio
>>Domandare è lecito,rispondere è cortesia

lbenaglia Profilo | Guru

>La cosa è fattibile o sto dicendo solo un
>sacco di fesserie?e se la cosa è fattibile come faccio a far
>scaturire questo processo di checkpoint?
Non c'è bisogno di alcun checkpoint forzato dato che un full backup archivia i dati + una porzione del t-log che serve per mantenere consistente lo stato del db all'ora in cui viene eseguito il comando.
In caso di restore al termine del ripristino dei dati verrà automaticamente eseguito un recovery che provvederà a rendere persistenti le transazioni concluse presenti nel t-log e ad annullare quelle aperte ma non concluse con una commit.

>Grazie mille per l’aiuto
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5