![]() |
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 |
supongo que no se puede.... hiciste un begin transaction antes? se hacen respaldos periodicos de la bd?? tal vez eso te podria ayudar... |
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 |
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.