SQL Server 2000 – 恢复.MDF使用sp_attach_single_file_db失败,错误

由于不止一个人在干涉数据库,我们已经丢失了我们的事务日志文件,因此丢失了数据库。 幸运的是,我们的MDF文件仍然完好无损,我们并不担心丢失的交易,因为它们只是“删除”交易。

我做了一些研究,发现sp_attach_single_file_db命令几乎是为了这个目的,而sql server在文件被删除之前已经closures了。 我用这个命令:

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

其中'RecoveredDatabase'是我的新数据库,'E:\ SQL DATA \ AerationBasinsTrend_Data.mdf'是phyiscal .mdf文件。 我运行这个时出现错误。 服务器报告这一点:

服务器:消息1813年,级别16,状态2,行1

无法打开新数据库“RecoveredDatabase”。 CREATE DATABASE被中止。

设备激活错误。 物理文件名“E:\ SQL Data \ AerationBasinsTrend_Log.LDF”可能不正确。

设备激活错误。 物理文件名称“C:\ SQL备份\ TransLog”可能不正确。

据我所知,这个命令应该创build一个新的ldf文件,如果旧的不存在。 我错过了什么?

你可以试试这个:

  1. 使用相同的名称和相同的MDF和LDF文件创build一个新的数据库

  2. 停止sql服务器并将现有的MDF重命名为新的MDF,并将原始MDF复制到此位置并删除LDF文件。

  3. 启动SQL Server

  4. 现在你的数据库将被标记为可疑

  5. 更新sysdatabases以更新到紧急模式。 这不会在启动时使用LOG文件

 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. 重新启动sql服务器。 现在数据库将处于紧急模式

  2. 现在执行未logging的DBCC来创build一个日志文件

DBCC REBUILD_LOG(dbname,'c:\ dbname.ldf') – 未logging的步骤来创build一个新的日志文件。

(根据您的要求replace数据库名称和日志文件名称)

  1. 执行sp_resetstatus

  2. 重新启动SQL Server并查看数据库处于联机状态。

资源