由于不止一个人在干预数据库,我们丢失了事务日志文件,从而丢失了数据库。幸运的是,我们的 MDF 文件仍然完好无损,我们并不担心丢失的事务,因为它们只是“删除”事务。
我做了一些研究,发现 sp_attach_single_file_db 命令非常适合于此,并且在删除文件之前关闭了 sql server。我使用了这个命令:
EXEC sp_attach_single_file_db @dbname = 'RecoveredDatabase',
@PhysName = 'E:\SQL Data\AerationBasinsTrend_data.mdf'
Run Code Online (Sandbox Code Playgroud)
其中 'RecoveredDatabase' 是我的新数据库,'E:\SQL DATA\AerationBasinsTrend_Data.mdf' 是 phyiscal .mdf 文件。运行此程序时出现错误。服务器报告如下:
服务器:消息 1813,级别 16,状态 2,第 1 行
无法打开新数据库“RecoveredDatabase”。CREATE DATABASE 已中止。
设备激活错误。物理文件名“E:\SQL Data\AerationBasinsTrend_Log.LDF”可能不正确。
设备激活错误。物理文件名“C:\SQL Backup\TransLog”可能不正确。
据我所知,如果旧的文件不存在,这个命令应该创建一个新的 ldf 文件。我错过了什么?
sql-server ×1