Przez pomyłkę usunąłem około 2 000 000 rekordów ze zdalnej tabeli SQL Server 2008. Serwer nie przyznaje mi dostępu do plików kopii zapasowych po stronie serwera.
Czy jest jakiś sposób na odzyskanie tych zapisów?
Przez pomyłkę usunąłem około 2 000 000 rekordów ze zdalnej tabeli SQL Server 2008. Serwer nie przyznaje mi dostępu do plików kopii zapasowych po stronie serwera.
Czy jest jakiś sposób na odzyskanie tych zapisów?
Odpowiedzi:
Czy Twoja baza danych jest w trybie pełnego odzyskiwania?
Jeśli tak, czy wykonujesz kopie zapasowe dziennika transakcji?
Jeśli nie (nie w trybie pełnego odzyskiwania), przywróć ostatnią pełną kopię zapasową jako bazę danych o innej nazwie. (Nie nadpisuj bazy danych, którą już masz.) Stamtąd będziesz mógł przywrócić wszystkie rekordy, które były w trybie online w momencie tworzenia kopii zapasowej, ale stracisz wszystkie zmiany od tego czasu.
SQL Server przechowuje dzienniki dla każdego usuniętego rekordu. Możesz przeszukiwać te dzienniki za pomocą funkcji fn_dblog
SQL Server.
SELECT [RowLog Contents 0]
FROM sys.fn_dblog(NULL, NULL)
WHERE
AllocUnitName = 'dbo.TableName'
AND Context IN ( 'LCX_MARK_AS_GHOST', 'LCX_HEAP' )
AND Operation in ( 'LOP_DELETE_ROWS' )
;
Ale ten dziennik jest w formacie szesnastkowym i musisz przekonwertować ten format szesnastkowy na rzeczywiste dane.
Poniższy artykuł pomoże ci odzyskać usunięte rekordy w sposób określony powyżej:
http://raresql.com/2011/10/22/how-to-recover-deleted-data-from-sql-sever/
@user1059637
- Jakie jest Twoje podejście do osób dodających funkcjonalność do Twojego kodu?
Niestety nie będziemy w stanie pomóc bez większej ilości informacji. Ale z twojego pytania wynika, że usunąłeś z bazy danych 2 miliony rekordów. Najprawdopodobniej nie możesz odzyskać tych informacji, chyba że masz pełne logowanie do bazy danych i kupisz jakieś bardzo konkretne narzędzia.
Jeśli możesz opisać bardziej szczegółowo, co według Ciebie zrobiłeś i dlaczego uważasz, że nie możesz odzyskać zapisów, i możesz opisać organizację Twojej bazy danych, możemy ci pomóc nieco więcej.
Kilka ogólnych rad: jeśli uważasz, że usunąłeś 2 miliony rekordów, prawdopodobnie jesteś teraz trochę przerażony. Powinieneś więc zrobić pięciominutową przerwę, uspokoić się i wrócić do problemu. Powinieneś także natychmiast powiedzieć swojemu szefowi, czy jest to uzasadnione (nie budź kogoś o 2 nad ranem, żeby mu powiedzieć) i że pracujesz nad rozwiązaniem. Lepiej przyznać się do tego, co się stało, niż gorączkowo spróbować odzyskać zdrowie i potencjalnie pogorszyć sytuację i ukryć szczegóły. Wiedza, że twój szef może w jakiś sposób pomóc, pomaga rozwiązać problem. Tak jak powiedziałem, tylko kilka ogólnych rad.