martes, 15 de septiembre de 2009

Base de Datos Sospechosa

Ha Todo Nos ha pasado. Bueno a casi Todos.
Cuando SQL SERVER tiene una transacción Abierta y se apaga el servidor (no por el sistema operativo, sino porque un gracioso, lo desconecto por error) entonces la base de datos se queda en un Status de Suspect, en SQL 2000 para esta situación se solía hacer una combinación de cosas terribles…. Lo voy a describir pero no es para que lo hagan 
• Hackear las tablas de sistema para que la BD entre en un estado de emergencia (Para esto tendrías que actualizar los catálogos del sistema). Luego correr DBCC REBUILD_LOG para que el log de transacciones, se regenere.

Sucede que a partir de la versión 2005 DBCC REBUILD_LOG, no está soportado
Así que si te pasa algo similar ejecutas

ALTER DATABASE TuBaseDeDatos SET EMERGENCY;
GO
ALTER DATABASE TuBaseDeDatos SET SINGLE_USER;
GO
DBCC CHECKDB (TuBaseDeDatos, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS, ALL_ERRORMSGS;
GO


No te dejes asustar por el parámetro que dice REPAIR_ALLOW_DATA_LOSS(aquí solo desmarca las transacciones que quedaron abierta para que haya consistencia en tu Base de datos)

Este artículo en Ingles está más que perfecto incluso para practicarlo
http://www.sqlskills.com/BLOGS/PAUL/post/TechEd-Demo-Creating-detaching-re-attaching-and-fixing-a-suspect-database.aspx

No hay comentarios:

Publicar un comentario