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



相关推荐
2501_901006475 小时前
CSS如何实现多种颜色的线性渐变_使用linear-gradient()按方向和色标填色
jvm·数据库·python
2303_821287385 小时前
Golang怎么用embed嵌入SQL文件_Golang如何将SQL迁移文件嵌入Go程序统一管理【技巧】
jvm·数据库·python
m0_702036535 小时前
PHP怎么处理Eloquent Attribute Harmonization属性协调_Laravel解决数据冲突【教程】
jvm·数据库·python
蜘蛛小助理5 小时前
从 Excel 到多维表:蜘蛛表格如何解决传统数据库开发与维护痛点
数据库·人工智能·excel·数据库开发·多维表·多维表格·蜘蛛表格
iAm_Ike5 小时前
Redis怎样通过频道划分不同的日志级别
jvm·数据库·python
kexnjdcncnxjs5 小时前
CSS如何利用-nth-of-type(1)修改首个元素样式_通过位置约束精准修饰
jvm·数据库·python
dinglu1030DL5 小时前
Tailwind CSS如何实现鼠标悬停变色_使用hover-bg-blue-500类.txt
jvm·数据库·python
瀚高PG实验室5 小时前
xx000 can not wait without a pgproc
服务器·数据库·oracle·瀚高数据库
神明9315 小时前
Tailwind CSS如何实现鼠标悬停变色_使用hover-bg-blue-500类
jvm·数据库·python
wjykp5 小时前
1.neo4j琐碎知识
数据库·neo4j