从 SQL Server 中的 .bak 文件恢复(导入)数据库(带或不带脚本)

如果您已经开始使用 SQL Server(任何版本),有时您可能需要在备份 SQL 数据库后将数据库从一台电脑传输到另一台电脑。

通常,我们使用脚本或使用数据库的 .bak 文件来恢复数据库,执行脚本非常简单,只需在 SQL Server 版本中打开一个“新查询”窗口,然后复制粘贴可能包含数据或仅包含数据的脚本表架构(由您在创建脚本时选择),因此在这篇文章中,我将通过图像逐步向您解释如何在 SQL Server 中使用 .bak 恢复数据库。

 1 .我想您已经拥有要恢复的数据库的 .bak 文件。如果没有,请使用 sql server 创建 .bak 文件,或者仅从此链接下载演示数据库https://github.com/Microsoft/sql-server-samples/releases/tag/adventureworks

2. 将您的 .bak 移动到任何人都可以访问的驱动器/文件夹中,或者您可以说这不需要任何特殊权限。

3.打开您的SQL服务器(Express版本或我使用的任何其他版本的Express版本),连接到您要恢复数据库的sql服务器,右键单击“数据库”,然后单击“恢复数据库”

Attaching-bak-file-in-sql-server-1-min.png

4.现在选择“设备”单选按钮,然后单击浏览(...)按钮以找到存储在硬盘驱动器中的 .bak 文件。

恢复bak-file-in-sql-server-2-min.png

5.一旦您单击浏览器(...),就会出现如下所示的对话框,单击该对话框中的“添加”

恢复-bak-file-3-min.png

6.找到.bak文件,在本例中为AdventureWorks2012.bak,存储在D:\中,选择文件后,单击“确定”
定位-bak-文件-来自-pc-4-min.png

7.你会看到如下图,点击“确定”

使用-bak-file-sql-server-5-min.png 恢复数据库

8.现在我们已经完成了,数据库文件(.bak)已找到,现在只需单击“确定”,剩下的SQL Server将处理,因此单击“确定”并等待几秒钟,直到SQL Server恢复数据库。

最后一步备份数据库-bak-sql-server-6-min.png

完成后,您将看到一条弹出消息,显示成功消息。

完成-7-分钟.png

就这样我们就完成了,可以看到数据库已经成功恢复了。

数据库从-bak-file-sql-server-8-min.png 恢复

SQL Server 中的另一种方法是使用脚本从 bak 文件恢复数据库

上面在SQL Server中恢复数据库的方法是使用脚本从bak文件恢复数据库,所以假设这里我们在D:\中有.bak文件,我们可以运行如下脚本

使用 T-SQL
连接到数据库引擎。
在“标准”栏中,单击“新建查询”。
在 RESTORE 语句中,指定用于备份操作的逻辑或物理备份设备。此示例从具有物理名称的磁盘文件进行恢复

RESTORE DATABASE AdventureWorks2012 FROM DISK = 'D:\AdventureWorks2012.BAK'
GO

上面的脚本将使用指定的文件恢复数据库。如果数据库已经存在,它将覆盖文件。如果数据库不存在,它将创建数据库并将文件还原到备份中指定的相同位置。

注意:您可能会收到错误消息

Logical file 'AdventureWorks' is not part of database 'AdventureWorks'. Use RESTORE FILELISTONLY to list the logical file names.

或者

System.Data.SqlClient.SqlError: Directory lookup for the file "C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL.1\MSSQL\DATA\AdventureWorks.MDF" failed with the operating system error 3(The system cannot find the path specified.). (Microsoft.SqlServer.SmoExtended)

 

在这种情况下,这意味着您缺少上述备份的 .ldf/.mdf 文件,要获取它,您需要运行以下命令

RESTORE FILELISTONLY
FROM DISK = 'D:\AdventureWorks2012.BAK'

 

执行上述命令后,您将获得 .mdf/.ldf 的位置,例如“C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA\AdventureWorks2012_Data.mdf”,逻辑名称为“AdventureWorks2012_Data”,使用它在下面的查询中恢复数据库。

RESTORE DATABASE AdventureWorks2012 FROM DISK = N'E:\AdventureWorks2012.bak' WITH FILE = 1,
MOVE N'AdventureWorks2016_Data' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA\AdventureWorks2012_Data.mdf',
MOVE N'AdventureWorks2016_Log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA\AdventureWorks2012_Log.ldf',
NOUNLOAD, REPLACE, NOUNLOAD, STATS = 5
GO

还原完整备份,允许进行其他还原,例如差异备份或事务日志备份 (NORECOVERY)

NORECOVERY 选项在恢复完成后使数据库处于恢复状态。这允许您恢复其他文件以使数据库更新。默认情况下此选项处于关闭状态。

RESTORE DATABASE AdventureWorks2012 FROM DISK = 'D:\AdventureWorks2012.BAK' WITH NORECOVERY
GO

 

恢复差异数据库备份

此示例恢复数据库和MyAdvWorks数据库的差异数据库备份。

-- Assume the database is lost, and restore full database,
-- specifying the original full database backup and NORECOVERY,
-- which allows subsequent restore operations to proceed.
RESTORE DATABASE MyAdvWorks
FROM MyAdvWorks_1
WITH NORECOVERY;
GO
-- Now restore the differential database backup, the second backup on
-- the MyAdvWorks_1 backup device.
RESTORE DATABASE MyAdvWorks
FROM MyAdvWorks_1
WITH FILE = 2,
RECOVERY;
GO

 

THE END
分享
二维码
海报
从 SQL Server 中的 .bak 文件恢复(导入)数据库(带或不带脚本)
如果您已经开始使用 SQL Server(任何版本),有时您可能需要在备份 SQL 数据库后将数据库从一台电脑传输到另一台电脑。
<<上一篇
下一篇>>