Zmniejszanie dziennika transakcji

Jeśli wiadomo, że plik dziennika transakcji zawiera nieużywane miejsce, że użytkownik nie będzie potrzeby można odzyskania miejsca nadwyżki, zmniejszając rozmiar dziennika transakcji.Proces ten jest znany jako zmniejszania w pliku dziennika.

Zmniejszanie może wystąpić tylko wtedy, gdy baza danych jest online, a także, gdy co najmniej jeden wirtualny plik dziennika jest bezpłatne.W niektórych przypadkach zmniejszając dziennik może nie można aż po następnym obcinania dziennika.

Ostrzeżenie

Zazwyczaj obcięte automatycznie pod model odzyskiwanie prostego podczas bazy danych jest przechowywana w górę i w obszarze model odzyskiwanie pełnego podczas zapasowe dziennika transakcji.Jednak może być opóźnione obcinania przez szereg czynników.Aby uzyskać więcej informacji, zobacz Czynniki, które mogą opóźnić obcinania dziennika.

Aby zmniejszyć plik dziennika (bez zmniejszania plików bazy danych)

Aby monitorować zdarzenia zmniejszać pliku dziennika

To monitor log space

Ostrzeżenie

Zmniejszania bazy danych i plików dziennika zestaw automatyczne.Jednak zaleca się przeciwko automatycznego zmniejszania i autoshrink Właściwość bazy danych jest zestaw na FALSE domyślnieJeśli autoshrink jest zestaw ma wartość TRUE, automatyczne zmniejszanie zmniejsza rozmiar pliku, tylko wtedy, gdy więcej niż 25 procent jego przestrzeni jest nieużywany.Plik jest pomniejszony do rozmiaru, w którym tylko 25 procent pliku jest nieużywane miejsce lub oryginalny rozmiar pliku, którakolwiek jest większa.Informacje na temat modyfikowania ustawień autoshrink Właściwości, zobacz Jak Przeglądanie lub zmienianie właściwości bazy danych (SQL Server Management Studio)— za pomocą Automatyczne zmniejszanie właściwość Opcje strona — lub ZMIENIA opcje zestawu bazy danych (Transact-SQL)— Użyj opcji AUTO_SHRINK.

Jak działa zmniejszania pliku dziennika?

Dziennik transakcji zmniejszania zmniejsza jego rozmiar fizyczny, usuwając jeden lub więcej plików dziennika wirtualnego nieaktywne.Jednostki redukcji rozmiaru jest zawsze wirtualny plik dziennika.Na przykład jeśli plik dziennika 600 megabajtów (MB), który został podzielony na sześć dzienniki wirtualnego 100 MB, rozmiar pliku dziennika można zmniejszyć tylko w przyrostach o rozmiarze 100 MB.Można zmniejszyć rozmiar pliku do rozmiarów takich jak 500 MB lub 400 MB, ale plik nie zostanie obniżona do rozmiarów takich jak 433 MB lub 525 MB.wirtualny plik dziennika, który przechowuje rekordy aktywnego dziennika, aktywny plik dziennika wirtualnegojest elementem logicznym dziennika i nie można usunąć.Aby uzyskać więcej informacji, zobacz Fizycznej architektury dziennika transakcji.

Ostrzeżenie

Aparat baz danych Wybiera rozmiar wirtualny plik dziennika dynamicznie podczas pliki dziennika są tworzone lub extended.Aby uzyskać więcej informacji, zobacz Fizycznej architektury dziennika transakcji.

Bieżący rozmiar pliku dziennika jest taki sam, jako całkowity rozmiar strony, które są używane przez pliki dziennika wirtualnych.Należy jednak zauważyć, że strony nie są używane przez pliki dziennika.Nie można zwolnić wirtualnych plików dziennika, które przytrzymaj dowolną część dziennika logicznych.Jeśli wszystkie pliki dziennika wirtualnych w pliku dziennika przechowywania części logicznych dziennika, nie można ściągnąć plik.Zmniejszanie nie jest możliwe, aż po obcinania dziennika oznacza jeden lub więcej plików dziennika wirtualnego jako nieaktywną.

Operacja zmniejszania pliku można usunąć jedynie pliki dziennika wirtualnego nieaktywne.Jeśli rozmiar miejsce docelowe nie zostanie określony, Operacja zmniejszania pliku powoduje usunięcie tylko nieaktywne wirtualny plik dziennikas poza ostatni aktywny wirtualny plik dziennika w pliku.Jeżeli określono rozmiar miejsce docelowe operacji danego pliku zmniejszania usuwa tylko tyle nieaktywny plików dziennika wirtualnego podejścia, ale nie przekracza rozmiar miejsce docelowe.Po zmniejszania, plik dziennika jest zwykle nieco większy niż rozmiar miejsce docelowe i nigdy nie będzie mniejsza.Pliki dziennika wirtualnego utrudnić przewidywania faktycznie zmniejszy ilość pliku dziennika.

Gdy ściągnąć jest dowolny plik, zwolnione miejsce musi pochodzić z koniec pliku.Gdy jest ściągnąć plik dziennika transakcji, za mało wirtualnych plików dziennika na końcu pliku dziennika są zwalniane zmniejszenie dziennika do rozmiaru żądanie użytkownika.target_size Określonych przez użytkownika zostanie zaokrąglona do następnej najwyższą wirtualny plik dziennika granicę.Na przykład, jeśli użytkownik określa target_size 325 MB dla naszych 600 MB przykładowy plik zawierający sześć 100 MB wirtualnych plików dziennika, ostatnie dwa pliki dziennika wirtualne są usuwane i nowy rozmiar pliku jest 400 MB.

Natychmiast operacji DBCC SHRINKDATABASE lub DBCC SHRINKFILE próbuje zmniejszyć żądanego rozmiaru pliku dziennika:

  • Jeśli żadna część dziennika logiczne w plikach dziennika wirtualnego wykracza poza target_size znak plików dziennika wirtualne, które są dostarczane po target_size znak są zwalniane i pomyślne instrukcja DBCC zostaje uzupełniona nie wiadomości.

Jeśli część dziennika logiczne w dziennikach wirtualnego wykraczać poza target_size znaku, Aparat baz danych programu SQL Server zwalnia tyle miejsca, jak to możliwe i wystawia informacyjna wiadomość.Komunikat informuje, jakie akcje, które należy wykonać, aby usunąć logiczne dziennika z dzienników wirtualnych na końcu pliku.Po wykonaniu tego akcja, można następnie ponownie opublikowała instrukcja DBCC, aby zwolnić pozostałe miejsce.

Na przykład, załóżmy, że 600 MB pliku dziennika, zawierający pliki dziennika wirtualnego sześciu zawiera dziennik logicznego, który rozpoczyna się w dzienniku wirtualnego 3 i kończy w dzienniku wirtualnego 4 podczas wykonywania instrukcja DBCC SHRINKFILE z target_size 275 MB, czyli trzech czwartych sposób wirtualnego dzienniku 3:

Plik dziennika z sześcioma wirtualnymi plikami dziennika przed zmniejszeniem

Wirtualnych plików dziennika, 5 i 6 są zwalniane natychmiast, ponieważ nie zawierają one część dziennika logicznych.Jednak aby sprostać określonym target_size, wirtualny plik dziennika 4 powinny również zwolnione, ale nie może ponieważ posiada zakończenia części logicznych możnaPo uwolnieniu wirtualny plik dziennikas 5 i 6, Aparat baz danych wypełnia pozostałą część wirtualny plik dziennika 4 z rekordów manekina.Wymusza na końcu pliku dziennika do końca wirtualny plik dziennika 1.W większości systemów wszystkie transakcje, począwszy od wirtualny plik dziennika 4 zostanie dokonana w ciągu kilku sekund.Oznacza to, że cała aktywna część dziennika jest przenoszony do wirtualny plik dziennika 1.Plik dziennika teraz wygląda podobnie do następującej:

Plik dziennika został zredukowany do czterech plików wirtualnych

Instrukcja DBCC SHRINKFILE wystawia także komunikat informacyjny, który stwierdza, że nie może zwolnić wszystkie żądane miejsce i uruchomienie instrukcji kopii zapasowej dziennika, aby zwolnić pozostałe miejsce.Po przesunięciu aktywna część dziennika wirtualny plik dziennika 1, instrukcja kopii zapasowej dziennika obcina cały dziennik logiczne w wirtualny plik dziennika 4:

Wynikowy plik dziennika po obcięciu dziennika

Ponieważ wirtualny plik dziennika 4 posiada już dowolną część dziennika logiczne, można teraz uruchomić tej samej instrukcja DBCC SHRINKFILE z target_size z 275 MB.Plik dziennika wirtualny 4 następnie zostaje zwolniony i zmniejsza rozmiar pliku dziennika fizycznego do żądanego rozmiaru.

Ostrzeżenie

Niektóre czynniki, takie jak długo działającą transakcję, można zachować pliki dziennika wirtualnego active dłuższy okres.To ograniczyć ubytek dziennika lub nawet uniemożliwić dziennik kurczą w ogóle.Aby uzyskać więcej informacji, zobacz Czynniki, które mogą opóźnić obcinania dziennika.