SQL Server 2000 – Restaurar .MDF Utilizar sp_attach_single_file_db falla con error

Debido a que más de una persona se estaba metiendo con la database, hemos perdido nuestros files de logging de transactions y consecuentemente perdido la database. Afortunadamente, tenemos el file MDF perfectamente intacto, y no estamos preocupados por las transactions perdidas, ya que eran sólo transactions 'borrar'.

Hice una cierta investigación, y encontré que el command sp_attach_single_file_db está significado para esto, y el server del sql era shutdown antes de que el file fuera quitado. He utilizado este command:

EXEC sp_attach_single_file_db @dbname = 'RecovenetworkingDatabase', @PhysName = 'E:\SQL Data\AerationBasinsTrend_data.mdf' 

Donde 'RecovenetworkingDatabase' es mi nueva database, y 'E: \ SQL DATA \ AerationBasinsTrend_Data.mdf' es el file .mdf phyiscal. Consigo un error cuando corro esto. El server informa esto:

Servidor: Msg 1813, Nivel 16, Estado 2, Línea 1

No se pudo abrir la nueva database 'RecovenetworkingDatabase'. CREATE DATABASE se cancela.

Error de activación del dispositivo. El nombre de file físico 'E: \ SQL Data \ AerationBasinsTrend_Log.LDF' puede ser incorrecto.

Error de activación del dispositivo. El nombre de file físico 'C: \ SQL Backup \ TransLog' puede ser incorrecto.

Por lo que sé, este command debe crear un nuevo file ldf si el antiguo no está presente. ¿Qué me estoy perdiendo?

Puedes probar esto:

  1. Crear una nueva database con el mismo nombre y los mismos files MDF y LDF

  2. Detenga el server sql y cambie el nombre del MDF existente a uno nuevo y copie el MDF original en esta location y elimine los files LDF.

  3. Inicie SQL Server

  4. Ahora su database se marcará como sospechoso

  5. Actualice el sysdatabases para actualizar al modo de emergencia. Esto no utilizará files LOG en la puesta en marcha

 Sp_configure "allow updates", 1 go Reconfigure with override GO Update sysdatabases set status = 32768 where name = "BadDbName" go Sp_configure "allow updates", 0 go Reconfigure with override GO 
  1. Reinicie el server sql. ahora la database estará en modo de emergencia

  2. Ahora ejecute el DBCC indocumentado para crear un file de logging

DBCC REBUILD_LOG (dbname, 'c: \ dbname.ldf') – Paso indocumentado para crear un nuevo file de logging.

(reemplace el nombre de dbname y nombre de file de logging basado en su requisito)

  1. Ejecutar sp_resetstatus

  2. Reinicie el server SQL y vea que la database está en línea.

Fuente