sábado, 22 de agosto de 2009

Base de Datos Sospechosa SQL 2005 Express

Tengo un cliente que tiene Tango Gestión (9.202) en su empresa la verdad el programa es muy bueno pero tiene varios errores que te rompen el coco y el soporte que te dan es extremadamente caro para consultar cualquier cosa que a uno le pasa.

El otro día se me presento un problema grave en las bases de datos que son SQL Express 2005 una de ellas correspondiente a la empresa mas importante paso a estado sospechoso de repente (Ni se reinicio el servidor ni problemas de espacio) y la verdad me dejo en bolas, pero bueno buscando y buscando por internet encontré una muy buena solución pero me costo implementarla ya que el tutorial no estaba completo o mejor dicho capas estaba completo pero mis capacidades de entender no eran muy buenas y decidí poner la solución en este espacio.

Problema: La base de datos esta en estado sospechoso y no podemos hacer para recuperarla con alguna herramienta APB.

Prerrequisitos: Para poder trabajar tranquilos el tango no incluye un administrador de base de datos por lo que asegúrense de tener un SQL Manager Express a Mano mano e ingresan con alguna cuenta de usuario que tenga permisos de sysadmin (SA).

Operatoria:


  1. Buscamos los archivos en el disco duro; los que nos interesan son los mibase.mdf y mibase_log.ldf (Los mismos los pueden encontrar en: C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data)

  2. Copiamos estos archivos y los pegamos en algún lugar de resguardo.

  3. Entramos al SQL Manager y eliminamos la base en cuestión (Recuerden el nombre ya que la van a tener que crear exactamente igual). Medio extremo esto pero a mi me funciono de toda formas tienen guardados los archivos de datos.

  4. Creamos una nueva base de datos con exactamente el mismo nombre de la que borramos, recuerden que tienen que concordar los nombres de los archivos mdf, cuando la creen verán esto acá:


  5. Nota: Puede ser que la base de datos se llame MiBase pero los archivos mdf se llamen MiBase_Data.mdf (Esto me paso con el tango). Para asegurarse vean los nombres de los archivos en el back up que hicieron en el punto dos.
  6. Una vez creada la base de datos debemos detener los servicios de SQL Express (o el que posean)

  7. Luego debemos sobrescribir el archivo guardado .mdf por el que recién se creo con la nueva base de datos.

  8. Iniciamos de nuevo el motor de base de datos y entramos nuevamente al SQL Manager si es que lo habíamos cerrado.

  9. En este abrimos un nuevo cuadro de consulta desde la tabla master.

  10. Y acá viene el código:


    1. Primero verificamos el estado de nuestra base:

    2. SELECT state_desc FROM sys.databases WHERE name =’MiBase’;

      El estado de nuestra base debe ser RECOVERY_PENDING
    3. Ponemos nuestra base de datos en estado de emergencia con el siguiente comando

    4. ALTER DATABASE MiBaseSET EMERGENCY;

    5. Ponemos nuestra base de datos en Usuario Único

    6. ALTER DATABASE MiBase SET SINGLE_USER;

    7. Chequeamos la Base de Datos con la opción REPAIR_ALLOW_DATA_LOSS

    8. DBCC CHECKDB (MiBase, REPAIR_ALLOW_DATA_LOSS )WITH NO_INFOMSGS;

    9. Colocamos la base de datos de nuevo en Multiusuario

    10. ALTER DATABASE MiBase SET MULTI_USER ; 



Y listo la base debería andar perfectamente nuevamente, todavía no logre identificar porque me paso esto pero es la única solución que encontré al problema si alguien ve algo parecido o identifica el problema que causo esto me vendría bárbaro.

Saludos y espero que les sirva.

6 comentarios:

  1. Gracias .. creo q no soy la unica .. que bueno que aportes todas la experiencias que tienes.. bueno entonces hasta la proxima.. =)...

    ResponderEliminar
  2. buen tip el de bajar la base a emergencia y de ahi a mono usuario.... me dio una excelente idea para reslver mi problema

    ResponderEliminar
  3. me paso algo parecido e igualmente no tenia motivo alguno, y lo resolvi tras varias horas justo como lo platicas.

    Saludos

    ResponderEliminar
  4. Lucio te cuento que nosotros tenemos una base de datos que funcionaba correctamente con la version de tango 9.30, hemos migrado por recomendacion del soporte tecnico de tango a la version 9.70. Al finalizar el proceso de actualizacion la base de datos no pudo ser convertida. El soporte tecnico nos dice que la base de datos tenia inconsistencias que salieron a la luz durante la actualizacion y nos repararian la base de datos cobrandonos adicionalmente.
    Te pasó algo asi durante una actualizacion? se puede hacer algo antes de enviarla a reparar?
    Te agradezco la información que me puedas proporcionar.
    Saludos.

    ResponderEliminar
  5. salvaste mi vida!! muchas gracias

    ResponderEliminar
  6. ORAAALEEE MUCHISIMAS GRACIAS NOS HAS SALVADO....=) ME FUNCIONO A LA PERFECCION

    ResponderEliminar