You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从无法启动的Windows服务器迁移SQL Server数据至新服务器?

从无法启动的SQL Server服务器恢复数据到新实例的方案

嘿,别担心,这种情况完全有办法恢复数据——因为你的磁盘还能读取,SQL Server的核心数据都存在物理文件里,只要这些文件没损坏,就能顺利迁移到新服务器上。下面分情况给你详细说操作步骤:

情况1:原数据库是正常关闭的(比如崩溃前SQL服务正常停止过)

这是最理想的情况,操作起来很顺畅:

  • 先从旧磁盘里找出对应数据库的所有文件:
    • 默认存储路径一般是 C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\DATA(XX是版本号,比如MSSQL15对应SQL Server 2019)
    • 每个数据库至少包含一个.mdf(主数据文件)和一个.ldf(事务日志文件),如果数据库分了分区存储,还会有.ndf格式的次要数据文件——这些文件必须全部复制,少一个都不行
    • 把复制好的文件放到新服务器的某个目录里,记得给这个目录设置权限:让新SQL Server的服务账户(通常是NT SERVICE\MSSQLSERVER)拥有读取和写入权限,不然附加数据库时会报错
  • 然后在新SQL Server里完成附加操作:
    • 用SSMS(SQL Server Management Studio)可视化操作:右键「数据库」→「附加」→「添加」,选中复制过来的.mdf文件,系统会自动匹配对应的.ldf文件,确认路径无误后点击确定即可
    • 偏好命令行的话,执行这段T-SQL代码:
      CREATE DATABASE [你的数据库名称]
      ON (FILENAME = 'D:\新服务器存储路径\你的数据库.mdf'),
          (FILENAME = 'D:\新服务器存储路径\你的数据库.ldf')
      FOR ATTACH;
      

情况2:原数据库是异常关闭的(服务器突然崩溃,没来得及正常停止SQL服务)

这种情况下,事务日志可能残留未提交的操作,直接附加大概率会报错,需要用强制恢复的方式:

  • 同样先把.mdf、.ldf(以及.ndf如果存在的话)全部复制到新服务器目录,设置好权限
  • 先尝试正常附加,如果SSMS提示日志损坏或需要重建,就用下面的T-SQL命令强制附加:
    CREATE DATABASE [你的数据库名称]
    ON (FILENAME = 'D:\新服务器存储路径\你的数据库.mdf')
    FOR ATTACH_REBUILD_LOG;
    
    这个命令会自动重建一个新的事务日志文件,虽然可能会丢失最后几个未提交的事务,但能最大程度保留核心数据,执行完成后数据库就能正常使用了

几个关键注意事项

  • 必须复制所有相关文件:只拿.mdf文件是没用的,SQL Server需要完整的文件集合才能识别并恢复数据库
  • 权限设置不能忘:新SQL Server的服务账户必须能访问你存放复制文件的目录,否则会出现权限不足的报错
  • 版本要兼容:新SQL Server的版本不能低于原服务器的版本(比如原是2016版,新可以是2016/2019/2022,但不能是2014)。如果新版本更高,附加后数据库会自动升级,升级完成后就无法再放回旧版本的SQL Server中使用
  • 文件完整性检查:如果你的.mdf文件本身已经损坏,那可能需要专业数据恢复工具,但你提到磁盘可正常读取,大概率文件是完好的,不用过于担心

关于直接复制文件的问题

完全可以通过复制文件来完成迁移,但不是把文件直接丢到新服务器的DATA目录就完事了——你必须通过SQL Server的「附加」操作,让新实例把这个数据库注册到系统中(因为master系统数据库需要记录用户数据库的信息)。直接复制文件而不做附加的话,新SQL Server根本不会识别到这个数据库的存在

内容的提问来源于stack exchange,提问作者Tinman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:41:06