SQL Server在ldf文件误删的情况下恢复数据库

客户的SQL Server数据库在关闭的状态下把ldf文件(也就是日志文件)误删导致数据库无法正常打开,并且数据库没有备份。

方法一:使用 T-SQL 命令重建日志

这是微软官方推荐的通过命令行附加单文件的方法。

  1. 打开 SQL Server Management Studio (SSMS),以管理员身份连接到数据库引擎。
  2. 新建查询,执行以下命令(请替换文件路径和数据库名):

查询数据库对应文件所在位置,记录下来。

sql 复制代码
SELECT 
    name AS 文件逻辑名,
    physical_name AS 文件物理路径,
    type_desc AS 文件类型
FROM sys.master_files
WHERE DB_NAME(database_id) = 'YourDatabaseName';

先脱机再分离数据库,推荐使用SSMS图形界面操作。

sql 复制代码
USE master;
GO
ALTER DATABASE mes SET OFFLINE;
GO

USE [master]
GO
EXEC master.dbo.sp_detach_db @dbname = N'mes'
GO

CREATE DATABASE [YourDatabaseName] 
ON (FILENAME = 'D:\Data\YourDatabase.mdf') -- 替换为你的 mdf 实际路径
FOR ATTACH_REBUILD_LOG;
GO

方法二:使用 SSMS 图形界面附加

  1. 在 SSMS 对象资源管理器中,右键点击 "数据库 (Databases)"。
  2. 选择 "附加 (Attach...)"。
  3. 点击 "添加 (Add)",找到并选中你的 .mdf 文件,点击确定。
  4. 在下方的"数据库详细信息"网格中:

你会看到 .mdf 路径正确

你会看到 .ldf 路径显示 "未找到 (Not Found)"。

  1. 选中那行 .ldf 记录,点击 "删除 (Remove)" 按钮。
  2. 点击 "确定 (OK) "。



相关推荐
Binary-Jeff2 小时前
MySQL MVCC 原理解析:Undo Log、ReadView 与版本可见性机制
java·数据库·后端·mysql·spring
bug远离Jemma2 小时前
MySql基本使用命令记录
数据库·mysql·oracle
专注_每天进步一点点2 小时前
mysql-connector-j(8.0 及以上版本,包括你使用的 8.3.0)并非采用 GPL 许可证,因此你在项目中引入该依赖时,不需要遵循 GPL 的开源要求(比如开源你的整个项目)
数据库·mysql·apache
await 4042 小时前
Sql_Server2022企业版安装+SSMS安装
数据库
Maverick062 小时前
Oracle PDB 迁移与重定位
数据库·oracle
原来是猿2 小时前
MySQL【索引下】
数据库·mysql
九章-2 小时前
国产时序数据库选型技术指南:从需求匹配到价值验证
数据库·时序数据库
江不清丶2 小时前
MySQL深分页原理与优化实践:从根因剖析到生产级解决方案
数据库·mysql
倔强的石头_2 小时前
核心交易系统国产化工程实践:Oracle PL、SQL 兼容性与 RAC 架构演进解析
数据库