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:
- 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)
- Copiamos estos archivos y los pegamos en algún lugar de resguardo.
- 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.
- 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á:
- Una vez creada la base de datos debemos detener los servicios de SQL Express (o el que posean)
- Luego debemos sobrescribir el archivo guardado .mdf por el que recién se creo con la nueva base de datos.
- Iniciamos de nuevo el motor de base de datos y entramos nuevamente al SQL Manager si es que lo habíamos cerrado.
- En este abrimos un nuevo cuadro de consulta desde la tabla master.
- Y acá viene el código:
- Primero verificamos el estado de nuestra base:
- Ponemos nuestra base de datos en estado de emergencia con el siguiente comando
- Ponemos nuestra base de datos en Usuario Único
- Chequeamos la Base de Datos con la opción REPAIR_ALLOW_DATA_LOSS
- Colocamos la base de datos de nuevo en Multiusuario
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.
SELECT state_desc FROM sys.databases WHERE name =’MiBase’;
El estado de nuestra base debe ser RECOVERY_PENDING
ALTER DATABASE MiBaseSET EMERGENCY;
ALTER DATABASE MiBase SET SINGLE_USER;
DBCC CHECKDB (MiBase, REPAIR_ALLOW_DATA_LOSS )WITH NO_INFOMSGS;
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.