2008-09-02 11 views

Odpowiedz

109

jeśli dobrze pamiętam ... w analizatorze zapytań lub odpowiedniku:

BACKUP LOG databasename WITH TRUNCATE_ONLY 

DBCC SHRINKFILE ( databasename_Log, 1) 
+2

Jest to zdecydowanie lepsze niż ustawienie modelu odzyskiwania bazy danych na PROSTY (jak w odpowiedzi Blorgbearda), ponieważ jeśli twój model odzyskiwania jest PEŁNY, masz go tak ustawić z jakiegoś powodu. –

+47

truncate_only jest przestarzałe w SQL Server 2008, więc musisz przełączyć db do prostego odzyskiwania http://msdn.microsoft.com/en-us/library/ms143729(SQL.90).aspx –

+9

Dla SQL Server 2012 to działa, ale bez 'WITH TRUNCATE_ONLY'. –

258

W Management Studio:

  • Nie rób tego na rzeczywistym środowisku, ale aby upewnić się kurczyć swoje dev db jak można:
    • prawym przyciskiem myszy bazę danych, wybierz Properties, a następnie Options.
    • Upewnij "model odzyskiwania" jest ustawiony na "Simple", a nie "full"
    • kliknij OK
  • prawym kliknij ponownie bazy danych, wybierz Tasks ->Shrink ->Files
  • Zmian typ pliku do "Log"
  • Kliknij OK.

Alternatywnie, SQL, aby to zrobić:

ALTER DATABASE mydatabase SET RECOVERY SIMPLE 
DBCC SHRINKFILE (mydatabase_Log, 1) 

Ref: http://msdn.microsoft.com/en-us/library/ms189493.aspx

+1

Twoja odpowiedź właśnie uratowała mój dzień! Nie wiedziałem o opcji "kliknij prawym przyciskiem myszy - Zadania -> Zmniejsz". Dziękuję Ci! –

+7

Co robisz w środowisku na żywo? Najpierw wykonaj kopię zapasową dzienników? –

+1

Nie jestem DBA, ale tak, uważam, że utworzenie kopii zapasowej dziennika spowoduje jego skrócenie: http://technet.microsoft.com/en-us/library/ms179478.aspx – Blorgbeard

3

zapasowej dziennika LOGNAME z truncate_only następnie polecenia dbcc SHRINKFILE

46

Dla SQL Server 2008, komenda brzmi:

ALTER DATABASE ExampleDB SET RECOVERY SIMPLE 
DBCC SHRINKFILE('ExampleDB_log', 0, TRUNCATEONLY) 

Ta zmniejszona mój plik dziennika 14PL w dół do 1 MB.

+4

Ponieważ pytanie jest niejednoznaczne, która wersja i zaakceptowana odpowiedź nie ma zastosowania do SQL Server 2008, ta odpowiedź jest nadal ważna niezależnie od wieku. –

+0

Dzięki, pomogło mi to zredukować duży plik dziennika, który nie zareagował na DBCC SHRINKFILE –

+3

Nie zapomnij zmienić modelu odzyskiwania na PEŁNY, kiedy skończysz! – Dan

32

dla SQL 2008 można kopii dziennika nul urządzenia:

BACKUP LOG [databaseName] 
TO DISK = 'nul:' WITH STATS = 10 

a następnie użyć DBCC SHRINKFILE obciąć pliku dziennika.

+2

Jest to jedyna, która zakończyła pracę w mojej sytuacji ... Wystąpił błąd podczas próby użycia kopii zapasowej z TRUNCATE_ONLY – TomXP411

-7

Inną opcją jest całkowite odłączenie bazy danych za pomocą Management Studio. Następnie po prostu usuń plik dziennika, zmień jego nazwę i usuń później.

Powrót do Management Studio ponownie załóż bazę danych. W oknie dołączania usuń plik dziennika z listy plików.

Baza danych dołącza się i tworzy nowy pusty plik dziennika. Po sprawdzeniu, czy wszystko jest w porządku, możesz usunąć plik dziennika o zmienionej nazwie.

Prawdopodobnie nie powinieneś używać tego do produkcji baz danych.

+3

Nigdy tego nie rób! W dzienniku mogą znajdować się dane, które nie zostały jeszcze zatwierdzone w pliku danych. Tracisz takie dane. – Paul

+3

OSTRZEŻENIE! To jest nieprawidłowe i niebezpieczne! – defines

+0

Jeśli, w swojej odpowiedzi, ostrzegasz, aby nie wypróbować go w produkcji, w ogóle nie warto go publikować. –

Powiązane problemy