2012-09-20 15 views
8

ho commesso un errore enorme, ho eseguito questa query:Come rollback senza transazione

update Contact set ContaPassword = '7FD736A3070CB9766' 

Ho dimenticato la clausola WHERE, così in questo modo l'aggiornamento della password per tutti gli utenti. :(

C'è un modo posso recuperare i dati prima di questa ricerca?

+0

Ripristina dal backup. – Oded

+11

[Vedere la risposta qui] (http://dba.stackexchange.com/a/998/3690) –

+0

Non c'è Ctrl + Z in SQL Server. –

risposta

6

Non è possibile annullare il cambiamento, se è stato eseguito al di fuori di un BEGIN TRANSACTION/ROLLBACK. Questo è il motivo per comincio qualsiasi tipo di dati di produzione aggiornare con:..

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 ha sottolineato this excellent post by Brent Ozar on dba.stackexchange.com su questo argomento In modalità di recupero completo, è possibile esaminare i file di log per vedere cosa è cambiato

Inoltre, come Oded ha sottolineato, se si avere dei backup, non è difficile per tornare ai dati originali. È possibile ripristinare il backup da qualche parte e copiare i dati originali.

+0

Grazie per la tua risposta, in realtà è ok stavamo facendo backup giornalieri per il database, così abbiamo recuperato i dati ed è bello :) – kbaccouche

Problemi correlati