2009-05-06 18 views
19

Tak więc zaniedbałem wykonywanie kopii zapasowych mojej bazy danych fogbugz, a teraz plik ldf foggugz ma ponad 2 i pół koncertów. To było zbudowane w ciągu sześciu miesięcy, w których używaliśmy fogbugz.Jak zmniejszyć rozmiar pliku dziennika serwera sql?

Wykonałem kopię zapasową bazy danych, następnie wykonałem kopię zapasową i skróciłem dziennik transakcji, ale dziennik transakcji to nadal dwa i pół koncertu. Zredukowałem plik logu i jego wciąż dwa i pół występów. Nic, co robię, nie zmniejsza rozmiarów pliku.

Czy mimo to można rozwiązać ten problem? Czy jest to jedyny sposób, aby odłączyć bazę danych, usunąć plik dziennika, a następnie ponownie dołączyć do nowego?

+0

zobacz [tę odpowiedź] (http: // stackoverflow.com/questions/40402/what-is-the-command-to-truncate-a-sql-server-log-file/40420 # 40420) na podobne pytanie –

Odpowiedz

22

Witamy w zmiennym świecie zarządzania dziennikami programu SQL Server.

COŚ jest złe, chociaż nie sądzę, że ktokolwiek będzie mógł powiedzieć ci więcej, bez dodatkowych informacji. Na przykład, czy ta baza danych była kiedykolwiek używana do replikacji Transactional SQL Server? Może to powodować takie problemy, jeśli transakcja nie została zreplikowana do subskrybenta.

W międzyczasie, to powinien przynajmniej pozwala zabić plik dziennika:

  1. wykonać pełną kopię zapasową bazy danych. Nie pomijaj tego. Naprawdę.
  2. zmienić metodę tworzenia kopii zapasowych bazy danych do „Simple”
  3. Otwórz okno kwerendy i wprowadzić „checkpoint” i wykonać
  4. wykonać kolejną kopię zapasową bazy danych
  5. zmienić metodę tworzenia kopii zapasowych bazy danych z powrotem do " Pełna "(lub cokolwiek to było, jeśli nie było to już Proste)
  6. Wykonaj ostateczną pełną kopię zapasową bazy danych.

Powinieneś być teraz w stanie zmniejszyć pliki (jeśli wykonanie kopii zapasowej nie zrobiło tego dla ciebie).

Powodzenia!

+0

Tak! To rzeczywiście jest dość kapryśne. –

+3

ta technika nie jest zalecana - http://www.sqlskills.com/BLOGS/PAUL/post/Importance-of-proper-transaction-log-size-management.aspx –

+1

... i dlatego powiedziałem, że może to zrobić czego potrzebuje w INTERIMIE, dopóki nie zorientuje się, co uniemożliwia ścięcie jego dzienników. –

3
  1. Zapewnienie tryb tworzenia kopii zapasowych bazy danych jest ustawiony na Simple (patrz here na przegląd różnych trybach). Pozwoli to uniknąć SQL Server czeka na kopię zapasową dziennika transakcji przed ponownym wykorzystaniem przestrzeni.

  2. Użyj dbcc shrinkfile lub Management Studio, aby zmniejszyć pliki dziennika.

Krok nr 2 nic nie da, dopóki nie zostanie ustawiony tryb kopii zapasowej.

+1

Jak to zrobić Używam plików shcink dbcc w Management Studio? Czy to coś innego niż wybranie Zadania-> Zmniejszenie-> Pliki? Ponieważ zrobiłem to i plik nie jest mniejszy. Mogę też łatwo ustawić fogbugz na proste i po prostu rozwiązać problem, ale czuję, że coś tu brakuje, podobnie jak plik dziennika powinien zejść w dół, a jego nie. –

+0

@WindyCityEagle: Sugerowałbym czytanie na kopii zapasowych SQL Server w BOL, tam szczegóły są wyjaśnione. Szybko: w trybie pełnej kopii zapasowej wszystkie transakcje są zachowywane w plikach dziennika do czasu wykonania kopii zapasowej pliku dziennika, a następnie można je ponownie wykorzystać. Ma to sens w wielu środowiskach produkcyjnych (kopie zawsze są absolutnie spójne), ale w prostszych przypadkach to zbyt wiele wysiłku. Działa tak prosty tryb. – Richard

+0

@WindyCityEagle: "dbcc ..." jest tym, czego używasz w SQL (od dowolnego klienta), w studio zarządzania jest to Tasks | Skurcz | ... ale to tylko opakowanie GUI wokół polecenia dbcc. – Richard

3

Musisz kilkakrotnie zmniejszyć kopię dziennika, aby zmniejszyć rozmiar pliku dziennika, ponieważ strony plików dziennika nie mogą być ponownie uporządkowane, ponieważ strony z plikami danych mogą być tylko obcięte. Bardziej szczegółowe wyjaśnienie: check this out.

usunięcie pliku db & jest niebezpieczne! nie rób tego, chyba że chcesz utratę danych:

+0

Ten link był bardzo pomocny - może chcieć opublikować kod SQL z linku. – OldCurmudgeon

+0

404 link nie znaleziono :( –

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

Typ odzyskiwania mojej bazy danych był PEŁNY i nie mogłem znaleźć sposobu na zmianę go poprzez GUI w zarządzaniu studio 2014. Ta odpowiedź rozwiązała ten problem.Plik logu 12 GB jest teraz z powrotem do 1MB , wielkie dzięki! – Mixxiphoid

Powiązane problemy