update full deshacer sql-server-2005

sql server 2005 - full - ¿Cómo puedo deshacer una consulta de ACTUALIZACIÓN en el servidor SQL 2005?



rollback update sql server (10)

Como ya se dijo, no hay nada que puedas hacer excepto restaurar desde una copia de seguridad. Al menos ahora, habrá aprendido a envolver siempre las declaraciones en una transacción para ver qué sucede antes de decidir comprometerse. Además, si no tiene una copia de seguridad de su base de datos, esto también le enseñará a hacer copias de seguridad regulares de su base de datos.

Si bien no hemos sido de mucha ayuda para su problema inmediato ... es de esperar que estas respuestas aseguren que no vuelva a tener este problema en el futuro.

¿Cómo puedo deshacer una consulta de ACTUALIZACIÓN en el servidor SQL 2005?

Necesito hacer esto en SQL, no a través del código.


De la información que ha especificado, su mejor oportunidad de recuperación es a través de una copia de seguridad de la base de datos. No creo que vaya a poder revertir ninguno de los cambios que realizó, ya que aparentemente no estaba usando transacciones en ese momento.


En este ejemplo, ejecutamos la inserción de 2 líneas en la consulta y si todas son verdaderas, se ejecutan, pero si no, no se ejecuta nada y ROLLBACK

DECLARE @rowcount int set @rowcount = 0 ; BEGIN TRANSACTION [Tran1] BEGIN TRY insert into [database].[dbo].[tbl1] (fld1) values(''1'') ; set @rowcount = (@rowcount + @@ROWCOUNT); insert into [database].[dbo].[tbl2] (fld1) values(''2'') ; set @rowcount = (@rowcount + @@ROWCOUNT); IF @rowcount = 2 COMMIT TRANSACTION[Tran1] ELSE ROLLBACK TRANSACTION[Tran1] END TRY BEGIN CATCH ROLLBACK TRANSACTION[Tran1] END CATCH


Necesita esta herramienta y puede encontrar la transacción y revertirla.

ApexSQL Log


Puede revertir las declaraciones que ha ejecutado dentro de una transacción. En lugar de cometer la transacción, deshacer la transacción.

Si ha actualizado algo y desea revertir esas actualizaciones, y no lo ha hecho dentro de una transacción (aún no comprometida), entonces creo que es suerte ...

(Reparar manualmente, o restaurar copias de seguridad)


Puedes usar transacciones implícitas para esto

SET IMPLICIT_TRANSACTIONS ON update Staff set staff_Name=''jas'' where staff_id=7 ROLLBACK

Cuando lo solicite: puede establecer esta configuración ( SET IMPLICIT_TRANSACTIONS ON ) desde un procedimiento almacenado configurando ese procedimiento almacenado como el procedimiento de inicio.

Pero el comando SET IMPLICIT TRANSACTION ON es específico de la conexión. Por lo tanto, cualquier conexión que no sea la que ejecuta el procedimiento almacenado de inicio no se beneficiará de la configuración establecida.


Simple de hacer:

código de cabecera ...

Set objMyConn = New ADODB.Connection Set objMyCmd = New ADODB.Command Set objMyRecordset = New ADODB.Recordset On Error GoTo ERRORHAND

Código de trabajo ...

objMyConn.ConnectionString = ConnStr objMyConn.Open

código....

''Copiar datos de Excel''

objMyConn.BeginTrans <-- define transactions to possible be rolled back For NewRows = 2 To Rows objMyRecordset.AddNew For NewColumns = 0 To Columns - 1 objMyRecordset.Fields(NewColumns).Value = ActiveSheet.Cells(NewRows, NewColumns + 1) Next NewColumns objMyRecordset.Update Next NewRows objMyConn.CommitTrans <- if success, commit them to DB objMyConn.Close

Error:

Success = False objMyConn.RollbackTrans <-- here we roll back if error encountered somewhere LogMessage = "ERROR writing database: " & Err.Description

...


Tratar

ROLLBACK WORK;

Por lo general funciona


Una vez que se confirma una actualización, no se puede deshacer solo la actualización. Su mejor opción es volver a una copia de seguridad anterior de la base de datos.


begin transaction // execute SQL code here rollback transaction

Si ya ejecutó la consulta y desea revertirla, desafortunadamente su única opción real es restaurar una copia de seguridad de la base de datos. Si está utilizando copias de seguridad completas, debería poder restaurar la base de datos a un punto específico en el tiempo.