Jeśli transakcja jest zaangażowana powodzeniem mogę wtedy być w 100% pewien, że został napisany na bazie danych oraz do plików dziennika? Czy mogę mieć pewność, że dane są ZAPISANE?
Dzisiaj nasze pliki dziennika osiągnęły limit dysku i otrzymaliśmy wiele błędów. Ponadto niektóre inne usługi uległy awarii. Zwiększyliśmy dysk i zrestartowaliśmy serwer.
Podczas uruchamiania serwer wykonał „odzyskiwanie bazy danych” - czy mogę mieć pewność, że wszystko znów jest w porządku?
sql-server
sql-server-2008
sql-server-2008-r2
SQL Police
źródło
źródło
Odpowiedzi:
Jeśli aplikacja kliencka wydała COMMIT i otrzymała kod powodzenia, silnik gwarantuje, że transakcja będzie trwała. Gwarantujemy, że wszystkie zmiany dokonane w transakcji będą widoczne, nawet po awarii. Ponadto odzyskiwanie gwarantuje również, że każda niezatwierdzona transakcja zostanie wycofana w przypadku awarii.
Aby uzyskać więcej informacji, polecam przeczytać artykuł ARIES .
Rejestrowanie z wyprzedzeniem zapisu i odzyskiwanie nie może zagwarantować, że podstawowy sprzęt pamięci ma błędy (uszkodzenie). Każdy produkt inżynierski może zawierać wady.
Twoja aplikacja, podobnie jak wszystkie inne aplikacje, musi być starannie napisana, aby działała poprawnie w przypadku awarii (błędów). Nie ma magii.
źródło