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

SQL Server备份恢复至AWS RDS失败,如何使用WITH MOVE子句解决?

解决方案

前置说明

  • 如果你是尝试恢复SQL Server的系统master数据库:AWS RDS SQL Server 不支持直接恢复/覆盖系统数据库(master、model、msdb、tempdb),你需要手动导出原实例master库中存储的登录名、服务器级配置、权限等信息,再导入到目标RDS实例。
  • 如果你是恢复名称为Master的用户数据库,报错是因为备份中的数据库文件名和目标RDS实例上已存在的文件名冲突,按以下步骤操作即可。

操作步骤

步骤1:查询备份文件内的逻辑文件名

执行以下存储过程获取备份文件中包含的数据、日志文件的逻辑名称:

exec msdb.dbo.rds_restore_filelistonly
@s3_arn_to_restore_from='arn:aws:s3:::master/Master_backup_2021_09_01.bak';

执行完成后,记下返回结果中LogicalName列的两个值,分别对应数据文件(后缀通常为.mdf)和日志文件(后缀通常为.ldf)的逻辑名,示例返回的逻辑名一般为Master和Master_log。

步骤2:带WITH MOVE参数执行恢复

在RDS的恢复存储过程中通过@restore_options参数传入WITH MOVE配置,将备份中的文件重命名为不冲突的名称即可,示例命令如下:

exec msdb.dbo.rds_restore_database
@restore_db_name='Master',
@s3_arn_to_restore_from='arn:aws:s3:::master/Master_backup_2021_09_01.bak',
@restore_options = 'WITH MOVE ''Master'' TO ''D:\rdsdbdata\DATA\Master_restore.mdf'', MOVE ''Master_log'' TO ''D:\rdsdbdata\DATA\Master_restore_log.ldf''';

注意:SQL字符串中嵌套单引号需要转义,需替换命令中的Master、Master_log为你步骤1中查询到的实际逻辑文件名。

可选替代方案

如果你不需要保留目标RDS实例上现有的Master数据库,也可以先删除现有数据库后再执行原始的恢复命令,即可直接解决文件冲突问题,操作前请确认现有数据已备份。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:48:04