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


9

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 anziché 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 in genere (di nuovo in genere, sono esclusi casi speciali) non aumenta molto.


2
OK, e cosa è successo quando l'hai provato?

Risposte:


4

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 DBCC SHRINKFILE(yourTLogName)comando. C'è un secondo parametro facoltativo per la dimensione richiesta in cui ridurlo.


8

È 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 quindi di nuovo in pieno / di nuovo.


Ne ho fatto uno + perché questo è uno strumento nella casella degli strumenti di dbas e credo che la tua risposta non meriti voti negativi. Sono d'accordo con il sentimento che il modo migliore è quello di eseguire i backup del log delle transazioni, ma tutti gli strumenti validi possono essere utilizzati in modo corretto o in modo negativo.
Martin Sjöberg

6

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

Cambia il modello di recupero da completo a semplice, quindi torna a completo. Riduci il file utilizzando 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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.