从另一台计算机上的.bak文件还原数据库

时间:2012-11-15 10:54:16

标签: sql sql-server database database-restore

我没有做太多的SQL,我还是很新的,所以请原谅可能是一个基本问题。

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

目前,我只是使用内置向导来尝试实现此功能(打开SSMS - >连接到服务器 - >右击数据库 - >恢复数据库,然后选择从设备并浏览查找文件)。

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

我很抱歉,可能是一个非常抽象和错综复杂的问题 - 基本上,我需要知道的是我/如何从另一台机器上的.bak恢复SSMS中的数据库? 非常感谢

1 个答案:

答案 0 :(得分:30)

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

RESTORE DATABASE
    MyDB
FROM DISK = '\\MyShare\MyBackup.bak'
WITH 
    MOVE 'DataFile' TO 'D:\myNewDBLocation\DataFile.mdf',
    MOVE 'LogFile' TO 'E:\\myNewDBLocation\LogFile.ldf'
, REPLACE

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

RESTORE FILELISTONLY 
FROM DISK = '\\MyShare\MyBackup.bak'

有关各种选项和参数的其他信息:

RESTORE (Transact-SQL)