Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   SQL Server (http://www.forosdelweb.com/f87/)
-   -   AYUDA!! Hacer ROLLBACK de la ultima consulta ejecutada. (http://www.forosdelweb.com/f87/ayuda-hacer-rollback-ultima-consulta-ejecutada-417824/)

-=ArgoN=- 17/08/2006 01:09

AYUDA!! Hacer ROLLBACK de la ultima consulta ejecutada.
 
Hola de nuevo...
Ayer por la noche ejecute una query con resultados fatales :neurotico
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!!! :neurotico :neurotico :neurotico)

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? :neurotico :'(

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

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

ArgoN

Andres95 17/08/2006 07:27

supongo que no se puede.... hiciste un begin transaction antes?
se hacen respaldos periodicos de la bd?? tal vez eso te podria ayudar...

GatoNegro 17/08/2006 13:12

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

Mithrandir 17/08/2006 14:55

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.


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

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.