Recuperar base de datos sql(mdf) sin ldf
Necesitamos restaurar un archivo .mdf en una instancia diferente desde la que viene, debido
a que esa instancia tiene algún problema y no la podemos iniciar.
Al cerrarse mal la instancia por un error en el disco o en el servidor ,
al adjuntar el archivo .mdf nos dice que el .ldf está corrupto o no existe en la copia que queremos recuperar.
Para poder adjuntar el archivo .mdf sin el .ldf hay que seguir los pasos siguientes:
Crear la base de datos con el mismo nombre que la que vamos a adjuntar.
En este ejemplo la base de datos la he llamado BBDD.
Dejar la base de datos en estado de EMERGENCIA.
ALTER DATABASE BBDD SET EMERGENCY
Para los servicios de la instancia de SQL, y renombrar o eliminar el .mdf y .ldf.
Restaurar o copiar el .mdf que traemos de otro sitio en el lugar que el anterior.
Iniciar los servicios de SQL Server.
Ponemos la base de datos en estado de usuario único.
ALTER DATABASE BBDD set single_user
Pasar un checkdb para comprobar y reparar la base de datos.
DBCC CHECKDB (BBDD , REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS
La anterior, hay que ejecutarla 2 veces, ya que la primera vez que la pasamos sale el mensaje diciendo que no está el .ldf
que lo generará de nuevo, y la segunda vez es cuando la ejecuta.
Dejamos la base de datos en MULTIUSUARIO y lista para funcionar.
ALTER DATABASE BBDD SET MULTI_USER
Este es el script completo para ejecutarlo línea por línea.
–******************************************************************
— RECUPERAR BASE DE DATOS SIN LDF *
–******************************************************************
— 1.- Crear base de datos desde Management Studio
— 2.- Dejar base de datos en estado de emergencia
1 |
ALTER DATABASE BBDD SET EMERGENCY |
— 3.- Parar servicios de SQL, renombrar .mdf y .ldf
— 4.- Poner .mdf de la bbdd a recuperar
— 5.- Iniciar los servicios de SQL
–Vemos el estado en el que está la base de datos
1 |
SELECT state_desc FROM sys.databases WHERE name=‘BBDD’ |
–Ponemos la base de datos como sigle user
1 |
ALTER DATABASE BBDD set single_user |
–Pasamos un checkdb sobre la base de datos
1 |
DBCC CHECKDB (BBDD , REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS |
–Dejamos la base de datos BBDD como multiusuario y accesible
1 |
ALTER DATABASE BBDD SET MULTI_USER |
Si todo ha salido bien ya debe estar opertativa. Un Saludo a todos.
Suscribete a mi cana en youtube y o suscribete en la web para obtener notificaciones de los nuevos post. y ya saber si te sirvio comenta.
disculpa no ejecuta la sentencia:
ALTER DATABASE BBDD set single_user
me sale que no esta actualizada la version 661, que tengo que actualizar
lo que pasa es que es un mdf que me envia un compañero, pero sin el archivo ldf y quiero restaurarlo pero no me permite, e intentado hacer esto pero tmpoco, no puedo sacarlo del Estado EMERGENCY
Gracias amigos, son mis heroes.
Eres mi heroe amigo, muchas gracias.