一、数据库的备份
BACKUP DATABASE [pathogen-jeecg]
TO DISK = 'D:\pathogenManagement\pathogen_jeecg_Full.bak'
WITH COMPRESSION, STATS = 10, INIT;
二、数据库的还原
RESTORE DATABASE [pathogen_jeecg_jw]
FROM DISK = 'D:\pathogenManagement\pathogen_jeecg_Full.bak'
WITH REPLACE, STATS = 10;
报错显示:
消息 1834,级别 16,状态 1,第 10 行
无法覆盖文件 'D:\limsdb\pathogen-jeecg.mdf'。数据库 'pathogen-jeecg' 正在使用该文件。
消息 3156,级别 16,状态 4,第 10 行
文件 'pathogen-jeecg' 无法还原为 'D:\limsdb\pathogen-jeecg.mdf'。请使用 WITH MOVE 选项来标识该文件的有效位置。
消息 1834,级别 16,状态 1,第 10 行
无法覆盖文件 'D:\limsdb\pathogen-jeecg_log.ldf'。数据库 'pathogen-jeecg' 正在使用该文件。
消息 3156,级别 16,状态 4,第 10 行
文件 'pathogen-jeecg_log' 无法还原为 'D:\limsdb\pathogen-jeecg_log.ldf'。请使用 WITH MOVE 选项来标识该文件的有效位置。
消息 3119,级别 16,状态 1,第 10 行
在计划 RESTORE 语句时发现了问题。以前的消息提供了详细信息。
消息 3013,级别 16,状态 1,第 10 行
RESTORE DATABASE 正在异常终止。
错误消息表明你尝试还原的备份文件 pathogen_jeecg_Full.bak
试图覆盖当前正在被 pathogen-jeecg
数据库使用的数据文件(.mdf
)和日志文件(.ldf
)。由于这些文件正在被使用,所以 SQL Server 无法直接覆盖它们。
要解决这个问题,你需要使用 WITH MOVE
选项来指定新的数据文件和日志文件的路径,这样 SQL Server 就会把还原的数据和日志放到新的位置,而不是尝试覆盖现有的文件。
RESTORE DATABASE [pathogen_jeecg_jw]
FROM DISK = 'D:\pathogenManagement\pathogen_jeecg_Full.bak'
WITH REPLACE,
MOVE 'pathogen-jeecg' TO 'D:\pathogenManagement\pathogen_jeecg_jw.mdf', -- 指定新的数据文件路径
MOVE 'pathogen-jeecg_log' TO 'D:\pathogenManagement\pathogen_jeecg_jw_log.ldf', -- 指定新的日志文件路径
STATS = 10;