2012-09-20 14 views
8

Popełniłem ogromny błąd, wykonałem to zapytanie:Jak wycofać bez transakcji

update Contact set ContaPassword = '7FD736A3070CB9766' 

Zapomniałem klauzuli WHERE, więc w ten sposób aktualizacje hasło dla wszystkich użytkowników. :(

Czy istnieje sposób mogę odzyskać dane przed tego zapytania?

+0

Odzyskaj z kopii zapasowej. – Oded

+11

[Zobacz odpowiedź tutaj] (http://dba.stackexchange.com/a/998/3690) –

+0

Nie ma Ctrl + Z w SQL Server. –

Odpowiedz

6

Nie można cofnąć zmiany, jeśli prowadził ją na zewnątrz z rozpocząć transakcji/ROLLBACK. Dlatego zacznę jakichkolwiek danych produkcyjnych aktualizować z:..

BEGIN TRANSACTION 

-- report the bad or undesired data condition before-hand 
SELECT ... 

-- change the data 
INSERT/UPDATE/DELETE ... 

-- ensure we changed a reasonable number of records; may not be accurate if table has triggers 
SELECT @@ROWCOUNT 

-- get the data condition afterwards and be sure it looks good. 
SELECT ... 

-- always start with this enabled first 
ROLLBACK 

-- don't do this until you are very sure the change looks good 
-- COMMIT 

Martin Smith wskazał this excellent post by Brent Ozar on dba.stackexchange.com na ten temat w trybie pełnego odzyskiwania, możliwe jest sprawdzenie plików dziennika, aby zobaczyć, co się zmieniło

Ponadto, jak Oded wskazał, jeśli ciebie mieć kopie zapasowe, nie jest to trudne aby wrócić do oryginalnych danych. Możesz przywrócić kopię zapasową gdzieś i skopiować oryginalne dane.

+0

Dziękuję za odpowiedź, tak naprawdę to ok, robiliśmy codzienne kopie do bazy danych, więc odzyskaliśmy dane i jest fajnie :) – kbaccouche

Powiązane problemy