执行SQL恢复备份语句时出错:RMHStore数据库恢复失败
解决SQL Server数据库恢复报错(Msg 1834/3156)的方案
问题根源
你备份的原数据库是RMHStore,但恢复语句中WITH MOVE参数使用的是新数据库名称作为逻辑文件名,而备份文件实际存储的逻辑文件名是原库的RMHSTORE和RMHSTORE_log。SQL Server无法匹配到指定的逻辑文件时,会默认尝试将备份恢复到原数据库的物理路径,但原数据库RMHStore正在运行,占用了这些文件,因此触发报错。
解决步骤
第一步:确认备份文件中的逻辑文件名
执行以下SQL语句,查看备份文件包含的所有数据/日志文件的逻辑名:RESTORE FILELISTONLY FROM DISK = 'C:\ProgramData\RetailHero\DIAGTEST08TK5.bak';结果中的
LogicalName字段会显示备份内的实际逻辑文件名(应为RMHSTORE和RMHSTORE_log)。第二步:修改恢复语句,使用正确的逻辑名
将WITH MOVE中的逻辑名替换为备份文件实际的名称,物理路径保持指向新库的文件路径:RESTORE DATABASE DIAGTestDiagnostics32416Jan202415723 FROM DISK = 'C:\ProgramData\RetailHero\DIAGTEST08TK5.bak' WITH MOVE 'RMHSTORE' TO 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\DATA\DIAGTestDiagnostics32416Jan202415723.mdf', MOVE 'RMHSTORE_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\DATA\DIAGTestDiagnostics32416Jan202415723_log.ldf', RECOVERY, REPLACE, STATS = 10;第三步:验证权限(可选)
确保SQL Server服务账户对目标路径C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\DATA\有读写权限,避免因权限不足导致恢复失败。
内容的提问来源于stack exchange,提问作者Swati
相关产品推荐
相关产品推荐

