2009-05-06 24 views
19

Quindi ho trascurato di fare qualsiasi backup del mio database fogbugz, e ora il file ldf fogbugz ha più di 2 e metà di concerti. Questo è stato costruito nel corso dei sei mesi che abbiamo usato fogbugz.Come faccio a ridurre la dimensione del mio file di log del server sql?

Ho eseguito il backup del database, quindi ho eseguito il backup e ho troncato il log delle transazioni, tuttavia il registro delle transazioni è ancora di 2 e mezzo. Ho fatto una restrizione sul file di registro e il suo ancora 2 e mezzo di concerti. Nulla di ciò che faccio sembra ridurre le dimensioni del file.

C'è qualche problema per risolvere il problema? O è l'unica via di ritorno a questo punto per staccare il database, eliminare il file di registro e quindi ricollegarlo con uno nuovo?

+0

vedere [questa risposta] (http: // stackoverflow.it/questions/40402/what-is-the-command-to-truncate-a-sql-server-log-file/40420 # 40420) su una domanda simile –

risposta

22

Benvenuti nel mondo volubile della gestione dei registri di SQL Server.

QUALCOSA è sbagliato, anche se non penso che nessuno sarà in grado di dirti di più senza alcune informazioni aggiuntive. Ad esempio, questo database è mai stato utilizzato per la replica Transactional SQL Server? Ciò può causare problemi come questo se una transazione non è stata replicata a un sottoscrittore.

Nel frattempo, questo dovrebbe almeno permettere di uccidere il file di registro:

  1. eseguire un backup completo del database. Non saltare questo. Veramente.
  2. Modificare il metodo di backup del database a "Simple"
  3. Aprire una finestra di query e digitare "checkpoint" ed eseguire
  4. eseguire un altro backup del database
  5. Modificare il metodo di backup del database torna a " Completo "(o qualsiasi cosa fosse, se non fosse già semplice)
  6. Eseguire un backup completo finale del database.

Ora dovresti essere in grado di ridurre i file (se l'esecuzione del backup non lo ha fatto per te).

Buona fortuna!

+0

Sì! Questo è davvero volubile. –

+3

questa tecnica non è raccomandata - http://www.sqlskills.com/BLOGS/PAUL/post/Importance-of-proper-transaction-log-size-management.aspx –

+1

... ecco perché ho detto che può realizzare ciò di cui ha bisogno nell'intervallo, fino a quando non capirà cosa impedisce il log dei tronchi. –

3
  1. Garantire modalità di backup del database è impostato su Semplice (vedi here per una panoramica delle diverse modalità). Ciò eviterà SQL Server in attesa di un backup del log delle transazioni prima di riutilizzare lo spazio.

  2. Utilizzare dbcc shrinkfile o Management Studio per ridurre i file di registro.

Il passaggio 2 non eseguirà nulla finché non viene impostata la modalità di backup.

+1

Come faccio a usare dbcc shrinkfiles in Management Studio? È diverso dalla selezione di Attività-> Riduci-> File? Perché l'ho fatto e il file non diventa più piccolo. Inoltre, posso facilmente impostare fogbugz in modo semplice e risolvere il problema, ma mi sento come se mi mancasse qualcosa qui, come il file di registro dovrebbe ridursi di dimensioni e non lo è. –

+0

@WindyCityEagle: Suggerirei di leggere i backup di SQL Server in BOL, qui vengono spiegati i dettagli. Rapidamente: in modalità di backup completo tutte le transazioni vengono mantenute nei file di registro fino a quando viene eseguito un backup del file di registro, quindi tale spazio può essere riutilizzato. Questo ha senso in molti ambienti di produzione (i backup sono sempre assolutamente coerenti), ma in casi più semplici è troppo difficile. Così funziona la modalità semplice. – Richard

+0

@WindyCityEagle: "dbcc ..." è ciò che si utilizza in SQL (da qualsiasi client), nello studio di gestione è Task | Shrink | ... ma questo è solo un wrapper della GUI attorno al comando dbcc. – Richard

3

È necessario ridurre il numero di registro & per salvare il file di registro per ridurne le dimensioni, poiché le pagine del file di registro non possono essere riorganizzate in quanto le pagine dei file di dati possono essere solo troncate. Per una spiegazione più dettagliata check this out.

scollegare il db & eliminare il file di registro è pericoloso! non farlo a meno che non desideri la perdita di dati

+0

Il collegamento è stato di grande aiuto - potrebbe piacere pubblicare l'SQL dal link. – OldCurmudgeon

+0

404 collegamento non trovato :( –

23
Perform a full backup of your database. Don't skip this. Really. 
Change the backup method of your database to "Simple" 
Open a query window and enter "checkpoint" and execute 
Perform another backup of the database 
Change the backup method of your database back to "Full" (or whatever it was, if it wasn't already Simple) 
Perform a final full backup of the database. 

Run below query one by one 
1- USE Database_Name 
2- select name,recovery_model_desc from sys.databases 
3- ALTER DATABASE Database_Name SET RECOVERY simple 
4- DBCC SHRINKFILE (Database_Name_log , 1) 
+0

Il tipo di recupero del mio database era COMPLETO e non sono riuscito a trovare un modo per cambiarlo tramite la GUI nello studio di gestione 2014. Questa risposta ha risolto il problema.Il file di registro da 12 GB ora è tornato a 1MB , molte grazie! – Mixxiphoid

Problemi correlati