1
BACKUP DATABASE [MPRM] TO  DISK = N'\\rauf\shared\MPRM_15_5_10.BAK' 
WITH NOFORMAT, NOINIT,  NAME = N'MPRM-Full Database Backup', 
SKIP, NOREWIND, NOUNLOAD,  STATS = 10

备份过程有效,我MPRM_15_5_10.BAK在我的shared文件夹 ( D:\shared\) 中找到了一个文件。这是从另一台机器创建的备份。

当我尝试恢复备份时,使用以下脚本

RESTORE DATABASE [MPRM] 
FROM DISK = N'\\rauf\shared\MPRM_15_5_10.BAK' 
WITH FILE = 1,  NOUNLOAD, STATS = 10

我收到以下错误

消息 5133,级别 16,状态 1,第 1 行
文件“E:\DATABASES\MPRM.mdf”的目录查找失败,出现操作系统错误 2(系统找不到指定的文件。)。
消息 3156,级别 16,状态 3,第 1 行
文件“MPRM”无法恢复到“E:\DATABASES\MPRM.mdf”。使用 WITH MOVE 标识文件的有效位置。
消息 5133,级别 16,状态 1,第 1 行
文件“E:\DATABASES\MPRM_log.ldf”的目录查找失败,出现操作系统错误 2(系统找不到指定的文件。)。
消息 3156,级别 16,状态 3,第 1 行
文件“MPRM_log”无法恢复到“E:\DATABASES\MPRM_log.ldf”。使用 WITH MOVE 标识文件的有效位置。
消息 3119,级别 16,状态 1,
在规划 RESTORE 语句时发现了问题。以前的消息提供了详细信息。
消息 3013,级别 16,状态 1,第 1 行
RESTORE DATABASE 异常终止。

为什么系统会询问*.mdf, *.ldf文件?它与备份选项而不是恢复脚本有关吗?

我登录了Windows Authentication

4

1 回答 1

3

如果您的目标服务器没有与原始源服务器相同的磁盘/目录布局,则需要指定在还原时存储物理文件的位置。.bak备份文件包含逻辑 SQL Server 文件以及源服务器上的原始位置(完整的物理路径.mdf.ldf位置)。

所以你需要使用这样的东西:

RESTORE DATABASE [MPRM] 
FROM DISK = N'\\rauf\shared\MPRM_15_5_10.BAK' 
WITH FILE = 1,  
MOVE N'MPRM' TO N'D:\MSSQL\Data\MPRM.mdf',  
MOVE N'MPRM_Log' TO N'D:\MSSQL\Data\MPRM_Log.ldf',  
NOUNLOAD, REPLACE,  
STATS = 10

这个命令在这里:

MOVE N'MPRM' TO N'D:\MSSQL\Data\MPRM.mdf',  

指定在还原到物理位置期间应将调用的逻辑文件MPRM(这是您在创建 SQL Server 数据库时未指定任何其他内容时的默认设置)移动D:\MSSQL\Data\MPRM.mdf(根据需要进行调整)

要查看备份文件中包含的内容,您可以在此处使用此命令:

RESTORE FILELISTONLY
FROM DISK = N'\\rauf\shared\MPRM_15_5_10.BAK' 

这将向您显示备份中的所有逻辑文件,以及它们从中备份的原始物理文件(在您运行备份命令的源服务器上)。

于 2012-04-29T10:07:44.460 回答