V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dabao
V2EX  ›  数据库

SqlServer 被删库,超过 10G 的 mdf 文件能否从磁盘恢复

  •  
  •   dabao · 14 天前 · 5060 次点击

    背景关键词:Hyper-V ,VHDX ,HDD ,SqlServer ,删库

    事件经过:昨天同事误操作右键删除了 SqlServer 中的开发数据库,无备份。mdf 文件超过 10G 。发现之后第一时间把这台虚拟机关机了。

    恢复过程:

    1. 先使用DiskGenius挂载 vhdx 尝试恢复,未找到被删除的 mdf 及 ldf 文件。
    2. 使用宿主机磁盘管理挂载 vhdx ,用easyrecovery尝试恢复,选择分区,勾选深度扫描,在指定分区未找到被删除文件。
    3. 继续使用easyrecovery扫描整个 vhdx 磁盘,目前正在跑。

    请问大家有没有类似经历,求方案,先谢各位大佬了

    51 条回复    2025-04-24 19:50:59 +08:00
    bootvue
        1
    bootvue  
       14 天前
    放弃吧
    SS945
        2
    SS945  
       14 天前
    同事(是自己吗)
    dabao
        3
    dabao  
    OP
       14 天前
    @SS945 这是真同事
    dabao
        4
    dabao  
    OP
       14 天前
    @bootvue 真的没办法吗佬
    wyntalgeer
        5
    wyntalgeer  
       14 天前
    从生产拉一份得了,正好缓解一下开发生产不同步
    dabao
        6
    dabao  
    OP
       14 天前
    @wyntalgeer 还没有生产
    sir283
        7
    sir283  
       14 天前 via Android
    去咸鱼找专门搞数据恢复的团队搞,但是比较贵。你肯定接受不了,所以,跟你那个同事一起,赶紧提桶跑路吧。
    Oa
        8
    Oa  
       14 天前   ❤️ 1
    各种数据恢复软件都试试吧。比如 SysTools Hyper-V Recovery😆
    wyntalgeer
        9
    wyntalgeer  
       14 天前
    @dabao #6 啊?
    newaccount
        10
    newaccount  
       14 天前
    小文件还能碰碰运气,10G……
    knva
        11
    knva  
       14 天前
    10G 洗洗睡吧
    i8086
        12
    i8086  
       14 天前
    Hyper-V 有没检查点?先看看这个。
    dabao
        13
    dabao  
    OP
       14 天前
    @sir283 桶给他准备好了
    dabao
        14
    dabao  
    OP
       14 天前
    @Oa 下载试一下
    dabao
        15
    dabao  
    OP
       14 天前
    @newaccount 是啊,换了三四个恢复工具都找不到,其实不是 10G ,是 36G
    dabao
        16
    dabao  
    OP
       14 天前
    @knva 没有 10G ,只有 36G
    dabao
        17
    dabao  
    OP
       14 天前
    @i8086 没有检查点
    liuidetmks
        18
    liuidetmks  
       14 天前
    开发数据库,数据很重要吗?
    自己根据业务写一些垃圾数据可行吗
    dabao
        19
    dabao  
    OP
       14 天前
    @liuidetmks ETL 跑了好几个月
    dabao
        20
    dabao  
    OP
       14 天前
    @liuidetmks 问题还不是数据,数据可以重新跑,主要是表结构没了
    Immortal
        21
    Immortal  
       14 天前
    表结构没法通过代码反推吗
    han1988
        22
    han1988  
       14 天前
    丢数据记住不要关机。有专业公司可以恢复
    rlds
        23
    rlds  
       14 天前
    估计难搞,按理来说同一块硬盘上的东西都得停止而不只是停这一个虚拟机。
    webluoye
        24
    webluoye  
       14 天前
    表结构没有 git 么
    flynaj
        25
    flynaj  
       14 天前 via Android
    固态硬盘就不用试了,神仙来了也没有用
    qyxx
        26
    qyxx  
       14 天前
    虚拟机磁盘格式、还是 vhdx 这种受管理的,应该难。 裸磁盘或者 raw 磁盘文件还机会大一点。
    yolee599
        27
    yolee599  
       14 天前 via Android
    虚拟机…那大概率没救了!
    yjd
        28
    yjd  
       14 天前
    如上面说的,要整个盘停。如果 vhdx 不是一次性分配被复写到就难。我用过 UFS Explorer 最强但也不便宜,只有他能认我的 r10+vmfs+vmdk
    ruiy
        29
    ruiy  
       14 天前
    现在还有时间,可以收拾收拾东西。
    orangie
        30
    orangie  
       14 天前 via iPhone
    开发环境,不必理会
    opengps
        31
    opengps  
       14 天前
    小概率事件,很有可能这 10G 的存储已经被破坏,恢复了也不能用
    JKeita
        32
    JKeita  
       14 天前
    你们表结构都不存文档里吗
    lhsakudsgdsik
        33
    lhsakudsgdsik  
       14 天前
    年初的时候,客户的生产 mysql 数据库服务器的磁盘直接被人格式化了,根本恢复不了,只能找恢复公司,整盘恢复大概 5000 ,恢复之后 mysql 先是起不来并且还是很多表还是没数据,然后一个库 2000 修复了快一个月才搞定,整个过程非常头大,还是放弃吧建议
    lyle
        34
    lyle  
       14 天前
    十年前曾在生产环境误删数据,当时尝试用 EasyRecovery 之类的软件恢复无果,最终找据恢复公司解决了。记得他们通过远程使用 WinHex 对磁盘的剩余空间镜像,大概编了一个小程序读取数据库数据包头完成恢复。但数据库运行在物理机上,不确定 VHDX 格式是否仍有恢复可能性。
    hugebug
        35
    hugebug  
       14 天前
    表结构都没有的话 说实话 有点不规范啊
    liuliancao
        36
    liuliancao  
       14 天前
    问了 deepseek 推荐这个 R-Studio 建议先 dd 备份吧 然后再考虑操作 sqlserver 是 windows 的是吧
    yinmin
        37
    yinmin  
       14 天前 via iPhone
    pve 、pd 虚拟机里删文件会自动 trim 释放磁盘空间,我记得 vhdx 里删文件好像是不会自动 trim 数据的,并且 ntfs 是日志型,我感觉找专业公司是有恢复出来的可能性,建议 OP 找找专业公司。
    12345xw
        38
    12345xw  
       14 天前
    推荐 pc3000 ,B 站上的恢复数据 up 都用这个
    Brodess
        39
    Brodess  
       14 天前
    @dabao etl 用的 ssis 吗
    yinmin
        40
    yinmin  
       14 天前 via iPhone
    题外话,给 hyper-v 的建议,如何备份:

    1. 在 windows server 上新加一块备份专用 ssd 硬盘,也可以找一台 win server 的共享目录
    2. 为备份专用磁盘(或者共享目录所在磁盘)开启 windows server 的磁盘删除重复数据功能
    3. hyper-v 右键点击虚拟机,选择“导出”(虚拟机运行也可备份)到备份专用 ssd
    4. 建议每周备份一次,可以在“任务计划程序”里定期运行 powershell 指令自动导出虚拟机

    虚拟机开机备份,恢复出来的状态类似虚拟机备份时刻异常重启。由于启用了“磁盘删除重复数据”功能,你根本不用删历史备份,1 个 200GB 虚拟机每周备份一次保留 2 年历史备份,可能只占用了磁盘 250-300GB 空间。
    yinmin
        41
    yinmin  
       14 天前 via iPhone   ❤️ 1
    接#40 如果使用共享目录作为备份目标,优选 windows server 的共享目录,因为群晖等一众 nas 只有非常高端的企业型号才有“删除重复数据”功能,最便宜的能开启“删重”功能的,好像就是 win server 吧。
    lycoo
        42
    lycoo  
       14 天前
    开发库难道就没有导出过全库 sql ?或者任何一个备份。太奇怪了
    nm1st
        43
    nm1st  
       14 天前
    表结构都没有 这合理吗
    iceecream
        44
    iceecream  
       14 天前
    Rsstudio 试试。很好用,但是恢复出来的文件,在 mssql 上导入可能有逻辑问题
    chrawsl
        45
    chrawsl  
       14 天前
    hyper-v 不打快照的吗
    allendavis
        46
    allendavis  
       14 天前
    10G 了都没有一个备份或者表结构,说明不重要,没事儿继续造[doge]
    qping
        47
    qping  
       14 天前 via iPhone   ❤️ 1
    草台班子
    wwhc
        48
    wwhc  
       13 天前
    遇到这种情况,首先应该做的关机,用 linux 启动服务器,使用 dd 克隆物理硬盘/ssd
    GuangXiN
        49
    GuangXiN  
       13 天前
    没有一天一个快照这虚拟机是白用了
    2022study
        50
    2022study  
       13 天前
    如果从物理机器的文件系统中删除的用恢复软件还有些搞头,虚拟机的硬盘就不好讲了,如果是通过数据库管理软件删除的,那就基本没戏了。
    iamzcr
        51
    iamzcr  
       13 天前
    不是,你们表结构居然代码没 migrations 相关程序?你们更新咋办,直接手动去生产环境加字段?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3138 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:27 · PVG 20:27 · LAX 05:27 · JFK 08:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.