【问题标题】:Restoring a database from .bak file on another machine从另一台机器上的 .bak 文件恢复数据库
【发布时间】:2012-11-15 10:54:16
【问题描述】:

我没有做太多 SQL 并且对此还是很陌生,所以请原谅这可能是一个基本问题。

我被要求研究创建一个 SQL 作业来备份我们的数据库,将 .baks 存储在另一台机器上,然后将它们恢复到第二台服务器。我一直在做一些研究并使用 SSMS,并通过设置共享并将备份作业运行到共享位置,将数据库备份到我的个人计算机上。我现在正在尝试通过恢复 .bak 文件来创建一个新数据库(在我备份的同一台服务器上)(但给数据库我正在尝试创建一个新名称等等)但我无法指定从共享中恢复它,就像我在备份它时所做的那样/我找不到如何指定其他网络位置,我只是在尝试定位文件时浏览服务器的 C 驱动器。

目前,我只是使用内置向导来尝试实现这一点(打开 SSMS -> 连接到服务器 -> 右键单击​​数据库 -> 还原数据库,然后选择从设备并浏览以查找文件) .

这不是最终过程,只是我试图了解它的工作原理。正如我所说,我们的想法是最终有一个预定的工作将数据库从 server1 备份到 .bak 上,比如说,我的个人机器上,然后将其恢复到 server2 上的数据库(不同的网络,不同的城市),并且可能,使用一系列 SQL 命令,而不是每次都使用向导(有一些 DB 最终需要备份)。

对于这个可能相当冗长且令人费解的问题,我深表歉意 - 从本质上讲,我只需要知道我可以/如何从不同机器上的 .bak 恢复 SSMS 中的数据库吗? 非常感谢

【问题讨论】:

标签: sql sql-server database database-restore


【解决方案1】:

您可以使用类似以下脚本的内容。它从文件系统恢复数据库,并用名称“MyDB”覆盖现有数据库,在此过程中将文件移动到您选择的新位置。

恢复数据库 数据库 从磁盘 = '\\MyShare\MyBackup.bak' 和 将“数据文件”移动到“D:\myNewDBLocation\DataFile.mdf”, 将“日志文件”移动到“E:\\myNewDBLocation\LogFile.ldf” , 代替

您可以通过运行以下命令找出 llogical 文件的名称(在上面,这些文件称为 DataFileLogFile

仅恢复文件列表 从磁盘 = '\\MyShare\MyBackup.bak'

关于各种选项和参数的附加信息:

RESTORE (Transact-SQL)

【讨论】:

  • 感谢您的快速回复。几个问题,1) DataFile 和 LogFiles 是什么?如果将数据库恢复到相同的服务器/位置(就在我开始掌握它的时候,我真的不想访问第二台服务器,除非我真的需要)他们还需要移动吗? 2) 我尝试使用 RESTORE DATABASE MyDB FROM DISK ='\\MyShare\MyDir\backup.bak WITH REPLACE' 进行恢复,但出现错误:“媒体集有 2 个媒体系列,但只提供了 1 个。所有必须提供成员。”我无法声称理解,非常感谢任何帮助。
  • 数据文件是包含实际数据的文件。日志文件是事务日志,就像一个事务日志文件,可用于在发生崩溃时将数据恢复到特定时间点。尝试运行 RESTORE FILELISTONLY 命令来确定数据库实际使用了哪些文件。是的,将数据库还原到同一台服务器时,您需要移动文件。否则新数据库将尝试使用与第一个数据库相同的文件,这是不可能的。
  • 非常感谢。我现在启动并运行 :-) 会投票,但还不能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多