在 SQL Server 2005 中恢复数据库

Posted

技术标签:

【中文标题】在 SQL Server 2005 中恢复数据库【英文标题】:Restore database in SQL Server 2005 【发布时间】:2012-04-29 09:34:46 【问题描述】:
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

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

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

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,第 1 行 在规划 RESTORE 语句时发现了问题。以前的消息提供了详细信息。 消息 3013,第 16 级,状态 1,第 1 行 RESTORE DATABASE 异常终止。

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

我用Windows Authentication登录

【问题讨论】:

您在现有数据库上恢复还是该数据库不存在?第一种情况,您需要设置覆盖选项。我自己不使用命令行(使用 Management Studio 中的 Backup Agent),但我想您需要在还原文件时指定文件的目标位置,特别是如果您的目标 loc 与原始备份路径不同。跨度> 它正在尝试将其还原到与另一台计算机上相同的路径。消息告诉你,如果你想让它使用不同的路径,你需要使用WITH MOVE option @Damien_The_Unbeliever 否。它将从MPRM_15_5_10.BAK 恢复到[MPRM]。对吧? @Rauf:是的 - 但是实际的物理文件(.mdf.ldf)会在 哪里 去哪里?那是您的问题-它尝试在您进行备份的源系统上的完全相同的位置重新创建文件-但是该驱动器/目录在您尝试恢复的目标系统上不存在它到 【参考方案1】:

如果您的目标服务器与原始源服务器的磁盘/目录布局不同,则您需要指定在恢复.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',  

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

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

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

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

【讨论】:

以上是关于在 SQL Server 2005 中恢复数据库的主要内容,如果未能解决你的问题,请参考以下文章

03 SQL2005数据库备份和还原

sql server 2005 恢复数据库

SQL Server 2005 与VS2005编程语言C# winform实现数据库备份与恢复。

sql server2005中的段落还原/部分还原

Microsoft SQL Server 2016 安装错误 - “等待数据库引擎恢复句柄失败”

我在安装sql server 2005出现COM+警告后在网上找到:如下方法,照做后结果DTC服务没了,请问怎样恢复DTC