如何将SQL Server的ldf、mdf文件迁移至外部存储?复制时遇权限拒绝
解决SQL Server数据库文件复制权限拒绝及迁移至外部存储的方案
一、为什么会出现「Access Denied」错误?怎么解决?
你直接复制.mdf和.ldf文件时被拒绝,核心原因是SQL Server服务正在占用这些文件——数据库运行时,SQL Server会锁定数据文件和日志文件,防止外部修改导致数据损坏。解决办法分两步:
停止SQL Server服务释放文件锁
- 按下
Win + R输入services.msc打开服务管理器 - 找到你的SQL Server实例服务(默认名为「SQL Server (MSSQLSERVER)」,如果是命名实例会是「SQL Server (你的实例名)」)
- 右键选择「停止」,等待服务停止后再去复制文件,这时候就不会有占用问题了
- 按下
检查文件系统权限(如果停止服务后仍报错)
- 右键目标
.mdf/.ldf文件,选择「属性」→「安全」标签 - 确认当前登录用户拥有「读取」和「写入」权限,没有的话点击「编辑」添加用户并赋予对应权限
- 另外,建议以管理员身份打开文件资源管理器再操作,避免UAC权限限制
- 右键目标
二、如何将数据库迁移至外部存储?
这里提供两种常用方案,你可以根据实际场景选择:
方案1:脱机迁移(直接复制文件)——适合小数据库,操作简单
- 按照上面的步骤停止SQL Server服务
- 将
.mdf和.ldf文件复制到外部存储设备(U盘、移动硬盘等) - 到目标机器上,打开SQL Server Management Studio (SSMS):
- 右键「数据库」→「附加」
- 点击「添加」,找到外部存储里的
.mdf文件 - 确认
.ldf文件的路径正确(如果路径变了,手动修改到外部存储的对应位置) - 点击「确定」完成数据库附加
方案2:联机备份还原(推荐)——无需停止服务,更安全稳定
- 在源机器的SSMS中:
- 右键要迁移的数据库→「任务」→「备份」
- 备份类型选择「完整」,备份目标选择外部存储的路径(比如
E:\Backup\MyDatabase.bak,要确保SQL Server服务账户能访问这个外部存储路径) - 点击「确定」完成备份
- 将备份文件从外部存储复制到目标机器的可访问路径
- 在目标机器的SSMS中:
- 右键「数据库」→「还原数据库」
- 选择「源设备」,点击「...」选择备份文件
- 在「目标数据库」输入你想要的数据库名称
- 切换到「选项」标签,确认「覆盖现有数据库」(如果是新建数据库可忽略),然后点击「确定」完成还原
额外注意事项
- 如果是跨SQL Server版本迁移:高版本的数据库备份/文件无法直接在低版本中还原/附加,这种情况建议用「生成脚本+导出数据」的方式,或者使用SQL Server的「数据迁移助手」来处理兼容性问题
- 外部存储设备要确保有足够的空间,并且在备份时,SQL Server服务账户需要拥有该存储路径的读写权限
内容的提问来源于stack exchange,提问作者M.sadeghi




