Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

AYUDA!! Hacer ROLLBACK de la ultima consulta ejecutada.

Estas en el tema de AYUDA!! Hacer ROLLBACK de la ultima consulta ejecutada. en el foro de SQL Server en Foros del Web. Hola de nuevo... Ayer por la noche ejecute una query con resultados fatales Estaba usando el "SQL Query Analyzer" (Analizador de consultas SQL) y ejecute ...
  #1 (permalink)  
Antiguo 17/08/2006, 01:09
Avatar de -=ArgoN=-  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona, España
Mensajes: 843
Antigüedad: 18 años, 6 meses
Puntos: 1
Exclamación AYUDA!! Hacer ROLLBACK de la ultima consulta ejecutada.

Hola de nuevo...
Ayer por la noche ejecute una query con resultados fatales
Estaba usando el "SQL Query Analyzer" (Analizador de consultas SQL) y ejecute la siguiente consulta:

UPDATE SKILL_T SET sSkillMastery=100 WHERE CharID=1003 AND sSkillID=1 OR sSkillID=2 OR sSkillID=7 OR sSkillID=9 OR sSkillID=10 OR sSkillID=11 OR sSkillID=12 OR sSkillID=13 OR sSkillID=14 OR sSkillID=19 OR sSkillID=23

Con lo cual de la tabla SKILL_T me puso a 100 todos los "sSkillMastery" cuyo sSkillID fuese de 1 o 2 o 7... etc

La consulta que deberia haber hecho seria:

UPDATE SKILL_T SET sSkillMastery=100 WHERE CharID=1003 AND (sSkillID=1 OR sSkillID=2 OR sSkillID=7 OR sSkillID=9 OR sSkillID=10 OR sSkillID=11 OR sSkillID=12 OR sSkillID=13 OR sSkillID=14 OR sSkillID=19 OR sSkillID=23)

De forma que en todos los casos CharID deberia haber sido igual a 1003. (me olvide el parentesis!!! )

Mi pregunta es, si no he usado el comando COMMIT ni he cerrado el Analizador de consultas, puedo llegar a hacer un ROLLBACK del ULTIMO UPDATE realizado en el mismo analizador de consultas?

Es URGENTISIMO... nunca me habia pasado nada igual, y todo por no hacer un select antes de hacer el update

Si se puediera hacer el rollback de este ultimo UPDATE les estaria toda una vida agradecido!!!

ArgoN
  #2 (permalink)  
Antiguo 17/08/2006, 07:27
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
supongo que no se puede.... hiciste un begin transaction antes?
se hacen respaldos periodicos de la bd?? tal vez eso te podria ayudar...
  #3 (permalink)  
Antiguo 17/08/2006, 13:12
 
Fecha de Ingreso: agosto-2006
Mensajes: 7
Antigüedad: 17 años, 8 meses
Puntos: 0
Si es SQL server son inmediato las actualizaciones ha diferencia del ORACLE

para SQL Server necesitas indicarle antes de realizar una transaccion debes haber ejecutado el comando
BEGIN TRANSACTION
luego la transaccion
y despues
(ROLLBACK ó COMMIT) TRANSACTION


Sorry, trata de buscar un respaldo
  #4 (permalink)  
Antiguo 17/08/2006, 14:55
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Como te han dicho, si no comenzaste con un BEGIN TRANSACTION dejaste que SQL Server asumiera que cada sentencia es una transacción (transaction implicit).

En resumen.... estás frito.

Restaura la DB de tu respaldo más reciente o busca la manera de mediante querys regresar todo a su estatus correcto.

Existen programas (como los de Apex) para escarbar en el LOG y que puedieras utilizar para regresar hasta justo antes de esa sentencia. Pero dependes de tener la licencia del programa y en muchos de ellos tenerlo instalado desde antes del problema.

Obviamente para todo esto dependes de que en realidad exista un LOG donde escarbar, esto es, tener el Recovery Model en Full. Si lo tienes en Simple date por perdido.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:45.