SQL Server 只剩一个 .mdf 文件,数据库还能救吗?亲测三步走流程
|
admin
2026年10月15日 11:31
本文热度 11
|
操作前务必先把 .mdf(以及任何残留文件)异地备份一份,并确保当前账户有 sysadmin 权限。
方案一:直接附加重建日志(首选)
CREATE DATABASE [库名] ON (FILENAME = 'D:\Data\YourDB.mdf')
FOR ATTACH_REBUILD_LOG;
方案二:同名库覆盖 + 紧急模式修复
在同版本 SQL Server 中新建同名数据库,文件名需与原库一致;停止服务,用原 .mdf 覆盖新建的 .mdf,并删除 .ldf。
启动服务,此时数据库状态一般显示为 “Recovery Pending” 或“置疑”。
依次执行:
ALTER DATABASE [库名] SET EMERGENCY;
ALTER DATABASE [库名] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB([库名]) WITH ALL_ERRORMSGS; -- 先看错误情况
DBCC CHECKDB([库名], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;
ALTER DATABASE [库名] SET MULTI_USER;
ALTER DATABASE [库名] SET ONLINE;
若 CHECKDB 报错提示找不到日志文件路径,需按错误提示手动创建对应文件夹后重跑;修复成功后建议分离数据库再重新附加。
方案三:显式重建日志
ALTER DATABASE [库名] SET EMERGENCY;
ALTER DATABASE [库名] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [库名] REBUILD LOG ON (NAME = 日志逻辑名, FILENAME = 'D:\Data\YourDB_log.ldf');
ALTER DATABASE [库名] SET MULTI_USER;
ALTER DATABASE [库名] SET ONLINE;
阅读原文:点击这里
该文章在 2026/10/15 11:31:38 编辑过