Seguro que alguna vez nos ha pasado que por diversas razones solo tenemos fichero MDF de una base de datos y se ha perdido el fichero LOG (fichero de transacciones). Aunque parezca una tarea simple, no siempre es fácil hacer que la base de datos se ponga operativa. Buscando por Internet encontré diferentes consejos y pautas, pero sin resultados positivos, así que haciendo una combinación de lo que encontré, más la propia experiencia e intuición finalmente lo he logrado y quiero compartirlo aquí por si alguna vez os pasa.
De todas formas sugiero leer y probar este ejemplo de Paul S. Randal TechEd Demo: Creating, detaching, re-attaching, and fixing a suspect database.
El proceso que realicé fue el siguiente:
-
Crear una base de datos nueva con el mismo nombre del fichero MDF que tienes.
-
Parar el Servicio SQL Server y reemplaza el fichero MDF (asegúrate de tener una copia antes)
-
Iniciar el Servicio SQL Server. La base de datos se mostrará en estado “sospechoso” porque el fichero LOG no es correcto.
-
Ejecutar el siguiente script:
USE [master] GO ALTER DATABASE [BASEDEDATOS] SET EMERGENCY GO ALTER DATABASE [BASEDEDATOS] SET SINGLE_USER GO DBCC CHECKDB ([BASEDEDATOS], REPAIR_ALLOW_DATA_LOSS) GO ALTER DATABASE [BASEDEDATOS] SET MULTI_USER GO ALTER DATABASE [BASEDEDATOS] SET ONLINE GO
Después de ejecutar este script se muestra un mensaje de error algo así como
Msg 5173, Level 16, State 1, Line 1 One or more files do not match the primary file of the database. If you are attempting to attach a database, retry the operation with the correct files. If this is an existing database, the file may be corrupted and should be restored from a backup. Log file ‘c:Program FilesMicrosoft SQL ServerMSSQL10.SQLEXPRESS2008MSSQLDATABASEDATOS_log.ldf’ does not match the primary file. It may be from a different database or the log may have been rebuilt previously. Warning: The log for database ‘MyDatabase’ has been rebuilt. Transactional consistency has been lost. The RESTORE chain was broken, and the server no longer has context on the previous log files, so you will need to know what they were. You should run DBCC CHECKDB to validate physical consistency. The database has been put in dbo-only mode. When you are ready to make the database available for use, you will need to reset database options and delete any extra log files. DBCC results for ‘MyDatabase’. Service Broker Msg 9675, State 1: Message Types analyzed: 14. Service Broker Msg 9676, State 1: Service Contracts analyzed: 6. Service Broker Msg 9667, State 1: Services analyzed: 3. Service Broker Msg 9668, State 1: Service Queues analyzed: 3. Service Broker Msg 9669, State 1: Conversation Endpoints analyzed: 0. Service Broker Msg 9674, State 1: Conversation Groups analyzed: 0. Service Broker Msg 9670, State 1: Remote Service Bindings analyzed: 0. Service Broker Msg 9605, State 1: Conversation Priorities analyzed: 0. … Long list of GBCC messages … CHECKDB found 0 allocation errors and 0 consistency errors in database ‘BASEDATOS’. DBCC execution completed. If DBCC printed error messages, contact your system administrator.Lo único que hacemos es ignorar el mensaje porque realmente no se trata de un problema. Luego ya tendremos la base de datos operativa como queríamos. Espero que os sea de utilidad.
Si quieres más trucos de este tipo te invito a echarle un vistazo a este libro de SQL Server 2014 en Español
Comprar en Amazon | Comprar en Google Play |
MAESTRO!!!!
Realmente funciono.. y probe mil metodos…
simplemente… funciona….
Gracias..
De nada, me alegro que te haya servido. Un saludo.
Maestro!!!!!!
Excelente!! pero como hago para configurar donde se guardan los archivos mdf y ldf de tal manera de que, en el peor de los casos, si se borra por accidente la base de datos, aun tengamos los archivos mdf y ldf? es posible?
Esos ficheros por defecto se guardan en la ruta donde instalas el programa. Una vez terminado de instalar el programa, podrías parar los servicios de SQL Server e ir a la carpeta DATA (dentro de la ruta donde está instalado el programa) y copiar los ficheros como respaldo.
HOLA BUEN DIA
SOLO PARA AGRADECERLE ME FUNCIONO DE MARAVILLA LOS PASO AQUI ESCRITOS MUCHAS GRACIAS YA PODRE RECUPERAR LOS REGISTROS EN CASO QUE QUIERO PASARLO A OTRA BASE DE DATOS
GRACIAS
Muchas Gracias, funcionó a la perfección