SQL Server en Ambiente de Desarrollo y las bases de datos en Pending Recovery

NOTA: La información contenida en este post puede producir pérdida de datos y por ende, no asumo ninguna responsabilidad por las consecuencias del uso de la misma.

Una de las situaciones más comunes en los ambientes de desarrollo (no ejecutar en producción) es que por algún cambio de configuración alguna base de datos se quede en estado “Pending Recovery” y por lo tanto inaccesible para el cliente de la base de datos que pudiera ser SharePoint, Dynamics CRM o una aplicación web.
Bien para resolver este problema tenemos varias opciones, la primera que voy a mencionar es la más rápida y consiste en ejecutar este simple script (SÓLO EN AMBIENTES DE DESARROLLO LA EJECUCIÓN DEL SCRIPT PRODUCE PÉRDIDAS DE DATOS/NO EJECUTAR EN PRODUCCIÓN):

--PRODUCE PÉRDIDA DE DATOS
--NO EJECUTAR EN PRODUCCIÓN
ALTER DATABASE [Nombre_BDD] SET SINGLE_USER WITH NO_WAIT
ALTER DATABASE [Nombre_BDD] SET EMERGENCY;
DBCC checkdb ([Nombre_BDD], REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE [Nombre_BDD] SET ONLINE;
ALTER DATABASE [Nombre_BDD] SET MULTI_USER WITH NO_WAIT

Básicamente en la primera línea colocamos la base de datos en modo de usuario único, luego en modo de emergencia, después se ejecuta checkdb con el parámetro REPAIR_ALLOW_DATA_LOSS que le indica que se intente recuperar los datos pero que se admite la pérdida de los mismos en caso de que no se puedan recuperar, luego colocamos la base de datos en línea y finalmente se coloca en  modo multiusuario.

Deja un comentario