Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2005
Jvilomar Jvilomar is offline
Miembro
 
Registrado: mar 2004
Ubicación: Republica Dominicana
Posts: 97
Poder: 21
Jvilomar Va por buen camino
Unhappy Recuperar Registros Borrados

Saludos...

Tengo un pequeño problema... en realidad es un problema como de RD$25,000,000.00 o 5 dias de trabajo de 7 a.m. a 12:00 pm... ya ven la magnitud del mismo... y esta es mi pregunta.. utilizo una base de datos en SQL Server 2000 y eh borrado unas filas de una de mis tablas muy importantes en un script desde el Query Analizer era una transaccion implicita... so creo que tengo que olvidarme de ROLLBACK..... me gustaria saber si existe alguna forma de recuperar esas filas borradas.. o si tendre que olvidarme de dormir trankilo por un largo tiempo..

Muchas Gracias Por adelantado...
__________________
El conocimiento es un Patrimonio Universal....

Última edición por Jvilomar fecha: 20-10-2005 a las 22:50:36.
Responder Con Cita
  #2  
Antiguo 21-10-2005
Avatar de Xianto
Xianto Xianto is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nací en Neuquén (ARG), desde 2001 Spain
Posts: 151
Poder: 20
Xianto Va por buen camino
En mi humilde opinion, creo que deberias dejar de pensar en esos registros y dormir tranquilo. Todos alguna vez hemos borrado algo accidentalmente...

El rollback, solo funciona con una transacción, o sea si haces un "begin trans... pepe", luego puedes hacer un "rollback" de pepe, esto es porque los registros van a la TABLA destino marcados con el "pepe"... asi puede volver atras o guardar.

Bueno, saludos !
__________________
El diseño dira si tiene futuro...
Responder Con Cita
  #3  
Antiguo 21-10-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola:

Aprovecho de colgar mi duda acá, cómo se hace en SQL Server para que los datos insertados o actualizados pueda hacerse un Commit.?
Es decir en el analizador de consultas uno hace un Insert y se graba automáticamente en la tabla ya que no existe un botón Commit.

Saludos-.
__________________
No todo es como parece ser...
Responder Con Cita
  #4  
Antiguo 21-10-2005
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
Pues en teoria puedes recuperar ese registro, aunque yo en realidad nunca lo he hecho. La teoria dice que, puedes recuperar el ultimo backup full que le hiciste a la base de datos, y con el log de transacciones ir hasta un punto n en la evolucion de los datos de tu base de datos.

Ahora bien, si se hizo un backup luego de eliminados los registros, es muy poco probable que lo tengas, ya que los backups usualmente eliminan las entradas inactivas del transaction log, entre la que estan las tuyas, claro esta.

Te recomiendo empezar con los books online, y leerte algo al respecto, ademas de googlear sobre el tema, y que regreses con preguntas concretas, o respuestas que nos ayudaran a todos

Ahh, por cierto, a posteriori, implementa un buen plan de recuperacion de desastres, una buena politica de backups, y nunca realices pruebas en el servidor de produccion
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #5  
Antiguo 21-10-2005
Avatar de Xianto
Xianto Xianto is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nací en Neuquén (ARG), desde 2001 Spain
Posts: 151
Poder: 20
Xianto Va por buen camino
Cita:
Empezado por lucasarts_18
Hola:

Aprovecho de colgar mi duda acá, cómo se hace en SQL Server para que los datos insertados o actualizados pueda hacerse un Commit.?
Es decir en el analizador de consultas uno hace un Insert y se graba automáticamente en la tabla ya que no existe un botón Commit.

Saludos-.
Código:
begin transaction guarda
 
insert into tabla (a,b,c,d,e)
			 values (1,2,3,4,'pepe')
 
if @@error=0
   begin
	  commit transaction guarda
	  select error=0, msg='se ha guardado OK'
   end
ELSE
   begin
	  rollback transaction guarda
	  select error=-1, msg='Error interno.'
   end
Saludos.
__________________
El diseño dira si tiene futuro...
Responder Con Cita
  #6  
Antiguo 21-10-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola Xianto, creo no haberme explicado bien, pues en SQL Server todas las intrucciones Insert, Delete, Update que uno hace desde el analizador de consulta quedan automáticamente grabadas en la BD, es decir hay un commit implícito, a este punto quería llegar, yo creo que por motivos de seguridad debiera ser un commit explícito, es decir, uno darle la orden desde un botón o en el mismo Script, digo esto porque últimamente he tenido la oportunidad de trabajar un tiempo en Oracle y, accedemos a él mediante una herramienta de administración llamada PL/SQL Developer y este tiene unos botonos llamados Commit y Rollback, entonces desde una simple ventana de consulta SQL, uno puede hacer un Insert,Update o Delete sin que estos queden guardados en la BD hasta que uno confirme la transación con los botones comentados.

Mi pregunta es si es posible configurar SQL Server para que desde el analizador de consultas se deban confirmar las
transacciones ?..

Saludos
__________________
No todo es como parece ser...
Responder Con Cita
  #7  
Antiguo 22-10-2005
Avatar de Xianto
Xianto Xianto is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nací en Neuquén (ARG), desde 2001 Spain
Posts: 151
Poder: 20
Xianto Va por buen camino
Dudo que se pueda, pero si haces lo que te he dicho podrías hacerlo.

En el analizador declaras una transaccion, haces todos los insert, delete update y demas querys que quieras y si al final estas contento, haces un commit !

Todas las interacciones con una DB llevan un commit implicito, lo que pasa es que si tu defines tu propia transacción, llevas la ventaja, por lo cual al final el que decide si guarda o no es el que inicio la transacción !
__________________
El diseño dira si tiene futuro...
Responder Con Cita
  #8  
Antiguo 25-10-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola:

Cita:
Empezado por Xianto
En el analizador declaras una transaccion, haces todos los insert, delete update y demas querys que quieras y si al final estas contento, haces un commit !
De acuerdo contigo en el asunto de declarar una transación, pero en el código que expusiste haces un insert y si todo está correcto se graba en la BD, cosa que no da la posibilidad de hacer un rollback, cosa que no se cumpliría lo que dices:

Cita:
Empezado por xianto
y si al final estas contento, haces un commit !
Esto no sería así ya que estes o no contento el commit se hace igual.

Lo que complica es si uno quiere insertar unos par de registro con el solo motivo de ver si esos datos se graban sin problemas en la BD, esto automaticamente queda grabado en la BD por el motivo de no haber un Rollback explícito (hablando que lo hacemos desde el analizador de consultas, existen otras herramientas que tienen en el menú la posibilidad de hacer esto a través de Commit y Rollback).

Cita:
Empezado por xianto
Todas las interacciones con una DB llevan un commit implicito, lo que pasa es que si tu defines tu propia transacción, llevas la ventaja, por lo cual al final el que decide si guarda o no es el que inicio la transacción !
Lo único que concluyo de esto, es que esto se puede hacer desde una aplicación con los componentes Database, en conclusión, desde el analizador de consultas no es muy adecuado para esto, existen otras herramientas más eficaces para este acometido.

Bueno, te agradezco xianto por haber respondido a mis preguntas, si algo no te parece de lo que escribí o no estás de acuerdo hazmelo saber..

Nos vemos.
__________________
No todo es como parece ser...
Responder Con Cita
  #9  
Antiguo 25-10-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por lucasarts_18
Aprovecho de colgar mi duda acá, cómo se hace en SQL Server para que los datos insertados o actualizados pueda hacerse un Commit.?
Es decir en el analizador de consultas uno hace un Insert y se graba automáticamente en la tabla ya que no existe un botón Commit.
Este no es un problema del sql server, como motor, sino del sql analizer, como (mal) cliente.

Podes poner al inicio de todos tus scripts un "set implicit transaction off", con lo que ya el motor quedará a la espera de un commit o rollback para proceder como corresponde con la transacción.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #10  
Antiguo 25-10-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
Empezado por jachguate
el motor quedará a la espera de un commit o rollback para proceder como corresponde con la transacción.
Olvidé mencionar que el commit o rollback se consiguen introduciendo estas palabras en el editor y ejecutando la consulta (F5). :$

Hasta luego
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #11  
Antiguo 25-10-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 21
lucasarts_18 Va por buen camino
Hola:

Jachguate, gracias por el aporte, aquí quería llegar, gracias también a Xianto

He resuelto mi duda .

Hasta Luego.
__________________
No todo es como parece ser...
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:22:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi