2008-10-02 10 views

Odpowiedz

6

To powinno załatwić sprawę

use master 
go 
dump transaction <YourDBName> with no_log 
go 
use <YourDBName> 
go 
DBCC SHRINKFILE (<YourDBNameLogFileName>, 100) -- where 100 is the size you may want to shrink it to in MB, change it to your needs 
go 
-- then you can call to check that all went fine 
dbcc checkdb(<YourDBName>) 

Słowo ostrzeżenia

ty użyłby go tylko na datach testowych/programistycznych abase, gdzie nie potrzebujesz odpowiedniej strategii tworzenia kopii zapasowych, ponieważ zrzucanie dziennika spowoduje utratę historii transakcji. W systemach żywych trzeba zastosować rozwiązanie sugested przez Cade Roux

+0

To działało świetnie! –

3

prawym przyciskiem myszy na bazie danych w Enterprise Manager> Wszystkie zadania> Shrink Database.

+0

UWAGA: Ta metoda, która jest najłatwiejsza, może w większości przypadków działać, jeśli nic się nie dzieje, postępuj zgodnie z zaakceptowaną. – lepe

4

Zapisz dziennik transakcji i zmniejsz go.

Jeśli baza danych jest regularnie archiwizowana i przycinana w punkcie kontrolnym, nie powinna wymknąć się spod kontroli, jednak jeśli wykonujesz dużą liczbę (rozmiar) transakcji między tymi interwałami, będzie rosnąć aż do następnej punkt kontrolny.

0

Inną rzeczą, można spróbować to, aby ustawić tryb odtwarzania na proste (jeśli nie są one już) dla bazy danych, które będą przechowywane pliki dziennika z uprawy jako szybko. Ostatnio mieliśmy ten problem, w którym wypełnił się nasz dziennik transakcji i nie dopuszczono już żadnych transakcji.

Kombinacja pliku zmniejszania, który znajduje się w wielu odpowiedziach i prostym trybie odzyskiwania, upewniła się, że plik dziennika pozostanie w rozsądnym rozmiarze.

0

Korzystanie Query Analyzer:

USE yourdabatase 
SELECT * FROM sysfiles 

powinien znaleźć coś podobnego do:

FileID … 
1    1    24264 -1   1280  1048578    0    yourdabatase_Data D:\MSSQL_Services\Data\yourdabatase_Data.MDF 
2    0    128   -1   1280  66   0        yourdabatase_Log  D:\MSSQL_Services\Data\yourdabatase_Log.LDF 

Sprawdź identyfikator pliku do pliku dziennika (jego 2 przez większość czasu). Wykonaj 2 lub 3 razy polecenie kontrolne, aby zapisać każdą stronę na dysku twardym.

Checkpoint 
GO 
Checkpoint 
GO 

wykonać następujące polecenie transakcyjnej do tułowia plik dziennika do 1 MB

DUMP TRAN yourdabatase WITH no_log 
DBCC SHRINKFILE(2,1) /*(FileID , the new size = 1 Mb)*/ 
0

Oto co zostało Korzystanie

BACKUP LOG <CatalogName> with TRUNCATE_ONLY 
DBCC SHRINKDATABASE (<CatalogName>, 1) 
use <CatalogName> 
go 
DBCC SHRINKFILE(<CatalogName_logName>,1) 
1

Nikt tu nie mówi, więc będę: NIGDY kurczyć dziennika transakcji. Jest to zły pomysł z punktu widzenia SQL Server.

Zachowaj mały dziennik transakcji, wykonując codzienne kopie zapasowe db i co godzinę (lub mniej) kopie zapasowe dzienników transakcji. Interwał tworzenia kopii zapasowej dziennika transakcji zależy od stopnia zajętości bazy danych.