2012-09-20 17 views
8

Hice un gran error, que ejecuta esta consulta:Cómo rollback de transacciones sin

update Contact set ContaPassword = '7FD736A3070CB9766' 

me olvidó la cláusula WHERE, por lo que de esta manera se actualizado la contraseña para todos los usuarios. :(

¿Hay alguna manera de recuperar los datos antes de esta consulta?

+0

Recuperar de la copia de seguridad. – Oded

+11

[Ver la respuesta aquí] (http://dba.stackexchange.com/a/998/3690) –

+0

No hay Ctrl + Z en SQL Server. –

Respuesta

6

no se puede deshacer el cambio si se ejecutó fuera de un BEGIN TRANSACTION/ROLLBACK. Esta es la razón de comenzar cualquier tipo de datos de producción actualizar 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 señaló this excellent post by Brent Ozar on dba.stackexchange.com sobre este tema en modo de recuperación completa, es posible examinar los archivos de registro para ver lo que ha cambiado

también, como Oded señaló, si tener copias de seguridad, no es difícil para volver a los datos originales. Puede restaurar la copia de seguridad en alguna parte y copiar los datos originales.

+0

Gracias por su respuesta, en realidad está bien, estábamos haciendo copias de seguridad diarias para la base de datos, así que recuperamos los datos y es genial :) – kbaccouche