Oracle ma polecenia SQL, które można wydać, aby transakcja nie została zarejestrowana. Czy jest coś podobnego w przypadku programu SQL Server 2008?
Mój scenariusz: Potrzebujemy dzienników Tx na serwerach (Dev, QA, Prod), ale być może da się bez nich obejść na maszynach deweloperskich.
sql-server
sql-server-2008
Raj Więcej
źródło
źródło
NOLOGGED
opcji.Odpowiedzi:
W żadnych okolicznościach nie można obejść się bez dzienników transakcji w programie SQL Server. Silnik po prostu nie będzie działał.
Możesz ustawić swój model odzyskiwania na PROSTY na swoich maszynach deweloperskich - co zapobiegnie rozdęciu dziennika transakcji, gdy kopie zapasowe dziennika tran nie zostaną wykonane.
ALTER DATABASE MyDB SET RECOVERY SIMPLE;
źródło
SQL Server wymaga dziennika transakcji do działania.
To powiedziawszy, istnieją dwa tryby działania dziennika transakcji:
W trybie pełnym dziennik transakcji rośnie do momentu utworzenia kopii zapasowej bazy danych. W trybie prostym : miejsce w dzienniku transakcji jest „odzyskiwane” w każdym punkcie kontrolnym .
Bardzo niewiele osób ma potrzebę uruchamiania swoich baz danych w modelu pełnego odzyskiwania. Jedynym celem korzystania z modelu pełnego jest to, że chcesz wykonać kopię zapasową bazy danych kilka razy dziennie, a tworzenie kopii zapasowej całej bazy danych zajmuje zbyt dużo czasu - wystarczy więc wykonać kopię zapasową dziennika transakcji.
Dziennik transakcji rośnie przez cały dzień, a Ty tworzysz jego kopię zapasową. Tej nocy wykonujesz pełną kopię zapasową, a następnie SQL Server obcina dziennik transakcji, zaczyna ponownie wykorzystywać miejsce przydzielone w pliku dziennika transakcji.
Jeśli robisz tylko pełne kopie zapasowe bazy danych , nie chcesz trybu pełnego odzyskiwania.
źródło
Istnieje trzeci tryb odzyskiwania, o którym nie wspomniano powyżej. Tryb odzyskiwania ostatecznie określa, jak duże stają się pliki LDF i jak często są zapisywane. W przypadkach, w których zamierzasz wykonywać dowolne typy wstawiania zbiorczego, powinieneś ustawić DB na "BULK / LOGGED". To sprawia, że wkładki masowe przesuwają się szybko i można je zmieniać w locie.
Aby to zrobić,
USE master ; ALTER DATABASE model SET RECOVERY BULK_LOGGED ;
Aby zmienić to z powrotem:
USE master ; ALTER DATABASE model SET RECOVERY FULL ;
W duchu dodania do rozmowy o tym, dlaczego ktoś nie chciałby LDF-a, dodam: Robimy modelowanie wielowymiarowe. Zasadniczo używamy bazy danych jako dużego magazynu zmiennych, które są przetwarzane zbiorczo przy użyciu programów zewnętrznych. NIGDY nie wymagamy wycofania. Gdybyśmy mogli uzyskać wzrost wydajności, wyłączając rejestrowanie WSZYSTKICH, wzięlibyśmy to w mgnieniu oka.
źródło
Jaki jest twój problem z dziennikami Tx? Oni rosną? Następnie wystarczy ustawić opcję obcinania w punkcie kontrolnym.
Z dokumentacji Microsoft:
źródło
Jeśli dotyczy to tylko maszyn deweloperskich, aby zaoszczędzić miejsce, po prostu przejdź do prostego trybu odzyskiwania i wszystko będzie dobrze.
Jednak na maszynach produkcyjnych zdecydowanie zalecamy utrzymanie baz danych w trybie pełnego odzyskiwania. Zapewni to, że w razie potrzeby będzie można przywrócić określony punkt w czasie.
Ponadto - posiadanie baz danych w trybie pełnego odzyskiwania może pomóc cofnąć przypadkowe aktualizacje i usunięcia, czytając dziennik transakcji. Zobacz poniżej lub więcej szczegółów.
Jak mogę wycofać zapytanie UPDATE w SQL Server 2005?
Przeczytaj plik dziennika (* .LDF) w sql server 2008
Jeśli przestrzeń jest problemem na maszynach produkcyjnych, po prostu utwórz częste kopie zapasowe dziennika transakcji.
źródło