Recuperar bd desde .mdf

Por una falla en el fluido eléctrico y en la UPS, mi servidor se apago abruptamente, al levantarlo nuevamente, una de mis bases de datos, la más im portante quedo en estado expected, no tengo backup reciente, tengo los archivos físicos .mdf y .ldf, he tratado de subirla utilizando la instrucción sp_attach_single_file_db, pero me da error diciendo que el archivo esta corrupto y no fue bien apagada la base de datos. Encontré en un foro el siguiente proceso (los ; indican fin de linea para no ocupar mucho espacio)
USE master ; go; sp_configure 'allow updates', 1 ; reconfigure with override; go
luego UPDATE sysdatabases SET status=32768 where name = 'mi database',
se supone que aqui se le cambia el estado a la BD para poder correr luego la instruccion
DBCC REBUILD_LOG ('mi database', 'c:mi log') y ahi se supone se recrea el log y se sube pero esto no lo he podido hacer porque no me ejecuta el update porque no puedo hacer actualizaciones 'ad hoc' a las tablas maestras, que debo hacer para poder actualizarlos.
O existe alguna otra forma para subir mi base de datos.

1 respuesta

Respuesta
1
Para poder tocar las tablas del sistema tienes que setear la opción de Permitir que se modifiquen los catálogos del sistema en la pestaña servidor (luego de dar en propieades del servidor configurado en el Enterprise Manager.
Si mal no recuerdo lo que yo he intentado es crear una db (creo que con nombre cualquiera), bajo el servidor, reemplazo el mdf de esa db por el que tengo y elimino el log. No estoy seguro pero creo que al levantar el servidor recreaba el archivo de log perdido.
Intenta esa opción si no te funciona la anterior, que no vas a perder nada si lo haces con otro nombre de base de datos.
Muchas gracias por tu respuesta, te cuento, ese proceso ya lo había hecho pero como la bd fue "mal apagada", no la subía, pero ya lo solucione. De la siguiente forma por si alguien lo necesita.
1). Cree una BD con el mismo nombre de la perdida. (Así creo el log y el mdf). 2). Como no me dejaba cambiar el estado de la base de datos por estar corrupto, lo cambio aquí de una ves con la instrucción, ALTER DATABASE 'mibasededatos' SET EMERGENCY. 3). Bajo el servicio del sql server. 4).sobreescribo el archivo .mdf y borro el log. 4.) subo de nuevo el servicio de sql server 5.) al accesar la BD queda en estado de emergencia solo accesible por un usuario administrador, como en este estado no de puede hacer backup, utilice el asistente de querys para generar los querys de todos los objetos de la base de datos. 6.) Cree una nueva base de datos llamada "salvacion" y corrí el script que genere en el punto anterior sobre era bd, crenadome en ella todos los objetos de la BD, queda entonces pendientes los datos, entonces con el import data wizard, bajo los registros de las tablas de la base de datos corrupta y los subo a la nueva base de datos 7.) hago un backup normal de esta nueva BD, borro la que esta en estado de emergencia, la vuelvo a crear y la resturo desde el backup de la nueva base de datos y listo, me salve. Te agradezco tu colaboración.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas