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) "。



相关推荐
海兰27 分钟前
【数据库】tdsql(MySQL )的事务隔离级别
android·数据库·mysql
灵析表格1 小时前
Excel连接MySQL的函数化革命:灵析表格MySQL函数族业务应用分析
数据库·mysql·adb·excel·wps·灵析表格·excel公式盒子
todoitbo1 小时前
把发票台账接进 Codex:KingbaseES MCP 的一次只读风险排查实践
数据库·oracle·codex·kingbasees·mcp
Navicat中国1 小时前
使用 Navicat 轻松生成数据库测试数据
数据库·数据
zyplayer-doc1 小时前
核心制度不该被随手修改:用zyplayer-doc锁定文档和全部子文档
大数据·数据库·人工智能·笔记·pdf·ocr
一路向北North2 小时前
Spring AI(11) :ChatPDF-向量数据库、PDF处理、向量写入和向量搜索
数据库·人工智能·spring
暗暗别做白日梦2 小时前
CompletableFuture 并发统计
网络·数据库·oracle
ClouGence2 小时前
告别 Navicat!CloudDM:开源免费一站式数据库开发管理工具
数据库·sql·开源·数据库开发
灵析表格2 小时前
灵析表格功能函数深度分析报告
前端·数据库·microsoft
哥本哈士奇2 小时前
dbt+SQLServer构建数据仓库(4):分层建模实战
数据仓库·sqlserver