Jednym z koszmarów administrator bazy danych jest utrata danych na skutek jego własnych błędów. Zdarza się, że administrator wykona polecenie UPDATE lub DELETE, zapominając o klauzuli WHERE lub niewłaściwie ją definiując, co skutkuje skasowaniem lub zmianą milionów wierszy w bazie danych.
Jakie opcje odtworzenia danych daje nam w takiej sytuacji SQL Server?
Rozwiązaniem może być posiadanie kopii zapasowej, która została wykonana tuż przed błędną komendą i odtworzenie danych z tej kopii.
Typową metodą odzyskania danych z istniejącej kopi zapasowej jest:
- Odtworzenie bazy danych z kopi zapasowej i używanie kopii zamiast bazy oryginalnej.
- Albo
- Odtworzenie danych z kopii zapasowej na tym samym serwerze przy pomocy innej nazwy bazy danych
- Zlokalizowanie wierszy niechcący skasowanych lub zmienionych w odtworzonej bazie
- Zaktualizowanie uszkodzonych wierszy przy pomocy oryginalnych wierszy z odzyskanej bazy
Niestety, scenariusz z odtworzeniem bazy danych nie zawsze umożliwia odzyskanie wszystkich danych.
Bardziej prawdopodobne jest, że
- Błędy nie zostały wykryte wystarczająco szybko.
- Nastąpiły kolejne zmiany danych, pomiędzy ostatnią kopią zapasową a wykonaniem błędnego zapytania, co znacząco komplikuje odtwarzanie danych.
- Pojawiły się nowe dane.
- Kopie zapasowe nie były wykonywane regularnie lub wcale ich nie ma.
Jedną z opcji, która umożliwia odzyskanie danych jest odczytanie informacji z logu transakcyjnego, z kopii zapasowej logu transakcyjnego lub odłączonego logu transakcyjnego.
ApexSQL Log jest narzędziem, umożliwiającym czytanie logu transakcyjnego i odtwarzanie utraconych danych przez wycofanie zmian na danych, tak aby dane wróciły do ostatniego pożądanego stanu.
Aby odtworzyć dane skasowane przypadkowo komendami UPDATE lub DELETE przy pomocy ApexSQL Log:
- Uruchom ApexSQL Log
- Podłącz się do bazy danych.
- W kroku Select SQL logs to analyze, dodaj kopię zapasową logu transakcyjnego i log odłączony, które mają zostać przeczytane. Zauważ, że muszą one utworzyć pełny łańcuch logów w celu umożliwienia poprawnego odczytania kolejnych transakcji. Dodanie kopii zapasowej logu może pomóc zwiększyć wydajność i jakość procesu odtwarzania danych.
- Użyj opcji Filter setup aby zawęzić zakres przeszukiwanego logu przy pomocy czasu, typu operacji, nazwy tabeli i innych opcji filtrujących.
- Po ustawieniu wszystkich opcji kliknij Open.
Odnalezione transakcje zostaną wyświetlone z oknie aplikacji. Nadal istnieje możliwość użycia opcji Filter, w celu wyeliminowania niepotrzebnych transakcji.
Aby wykonać odtwarzanie danych, zaznacz transakcje, które należy wycofać i kliknij Create undo script w zakładce Actions.
Aby wykonać skrypt w edytorze kliknij przycisk Execute lub naciśnij F5, a utracone lub zmienione dane zostaną odzyskane.
Podsumowując, jeżeli przypadkowo skasujesz lub zmienisz dane poleceniami DELETE/UPDATE, to możesz je odtworzyć przy pomocy ApexSQL Log
Tłumacz: Anna Lesniak
November 4, 2015