it-swarm.it

Come troncare il registro delle transazioni in un database di SQL Server 2008?

Come troncare il registro delle transazioni in un database di SQL Server 2008?

Quali sono i modi migliori possibili?

Ho provato questo da un blog come segue:

1) Dal database delle impostazioni al semplice ripristino, riducendo il file e impostando ancora una volta il ripristino completo, in effetti stai perdendo i tuoi preziosi dati di registro e non sarai in grado di ripristinare il punto nel tempo. Non solo, non sarai in grado di utilizzare i file di registro successivi.

2) La riduzione del file di database o del database aggiunge frammentazione.

Ci sono molte cose che puoi fare. Innanzitutto, inizia a eseguire il backup del log corretto utilizzando il comando seguente invece di troncarli e perderli frequentemente.

BACKUP LOG [TestDb] TO  DISK = N'C:\Backup\TestDb.bak'
GO

Rimuovere il codice di SHRINKING il file. Se si eseguono backup di log corretti, il file di log di solito (di nuovo in genere, sono esclusi casi speciali) non aumenta molto.

9
Neo

Il modo più sicuro e corretto per troncare un file di registro se il database è in modalità di recupero completo consiste nell'eseguire un backup del registro delle transazioni (senza TRUNCATE_ONLY. Questo sarà deprecato nelle versioni future e non è consigliabile).

Sembra che desideri ridurre il file di registro in seguito, nel qual caso eseguiresti un comando DBCC SHRINKFILE(yourTLogName). Esiste un secondo parametro facoltativo per la dimensione richiesta in cui ridurlo.

4
Thomas Stringer

È possibile eseguire il backup del registro sul dispositivo null:

backup log [databasename] to disk = 'nul';

In alternativa, è possibile cambiare il modello di recupero in semplice e poi di nuovo in pieno/di nuovo.

8
Luis Gonzalez

Se non ti interessano i tuoi dati di registro e vuoi semplicemente sbarazzartene:

Cambia il modello di recupero da completo a semplice, quindi torna a completo. Riduci il file usando DBCC SHRINKFILE con l'argomento TRUNCATEONLY

Il seguente comando cambierà il modello di recupero da completo a semplice

ALTER DATABASE <databse_name> SET RECOVERY SIMPLE

Il seguente comando cambierà il modello di recupero in pieno

ALTER DATABASE <databse_name> SET RECOVERY FULL

Per trovare il nome del file di registro è possibile utilizzare la seguente query

SELECT name 
FROM sys.master_files
WHERE database_id = DB_ID('<databse_name>')

Riduci il file

DBCC SHRINKFILE (N'<logical_file_name_of_the_log>' , 0, TRUNCATEONLY)

Vedere Qual è il comando per troncare un file di registro di SQL Server? per ulteriori informazioni al riguardo

6
Alex