在SQL server中导入。bak文件到数据库

我有一个扩展名为.bak的文件。

如何将此日期导入SQL Server中的数据库?

489280 次浏览

这将显示一个包含在DB.bak中的数据库文件列表:

RESTORE FILELISTONLY
FROM DISK = 'D:\3.0 Databases\DB.bak'

在第二步中,您将需要该列表中的逻辑名称用于MOVE操作:

RESTORE DATABASE YourDB
FROM DISK = 'D:\3.0 Databases\DB.bak'

你必须适当移动mdf ndf和amp;使用LDF文件

With Move 'primarydatafilename' To 'D:\DB\data.mdf',
Move 'secondarydatafile' To 'D:\DB\data1.ndf',
Move 'logfilename' To 'D:\DB\log.ldf'

而不是选择恢复数据库…,选择恢复文件和文件组…

然后输入一个数据库名称,选择.bak文件路径作为源,选中restore复选框,然后单击Ok。如果.bak文件有效,它将工作。

(SQL Server恢复选项名称不直观,这应该是一个非常简单的任务。)

您可以使用本地SQL Server方法简单地恢复这些数据库备份文件,或者您可以使用ApexSQL恢复工具快速虚拟附加文件并访问它们作为完全恢复的数据库。

免责声明:我是ApexSQL的产品支持工程师

SQL Server Management Studio

  1. 右击左窗格上的数据库(对象资源管理器)
  2. 单击恢复数据库……
  3. 选择设备,单击...,并添加你的<强> . bak < / >强文件
  4. 单击好吧,然后再次单击好吧

完成了。

  1. 连接到要存储数据库的服务器
  2. 右键单击数据库
  3. 点击恢复
  4. 选择源部分下的设备单选按钮
  5. 单击Add。
  6. 导航到.bak文件存储的路径,选择它并单击OK
  7. 输入您的DB的目的地
  8. 输入要存储数据库的名称
  9. 单击OK

完成

如果在开发过程中经常需要恢复数据库,可以使用node包。

安装:

npm install -g sql-bak-restore

用法:

sql-bak-restore <bakPath> <dbName> <oldDbName> <owner>

参数:

  • Bakpath,文件的相对或绝对路径
  • dbName,要恢复到哪个数据库(!!如果存在此名称的数据库将被删除!!)
  • oldDbName,数据库名称(如果您不知道,请指定一些内容并运行,运行后您将看到可用的数据库。)
  • 创建db_owner用户名并赋予他db_owner权限(密码“1”)

!! sqlcmd命令行实用程序应该在你的PATH变量中。

https://github.com/vladimirbuskin/sql-bak-restore/

简单地使用

sp_restoredb“您的数据库名称”,“您想要恢复的位置”

示例:sp_restoredb 'omDB','D:\abc.bak'

在Microsoft SQL Server Management Studio 2019上:

enter image description here

在恢复数据库窗口中:

  1. 选择设备

  2. 选择添加并选择目标文件

  3. 好的确认

  4. 确认恢复

enter image description here

尽管在许多答案中所述,使用SSMS恢复数据库要容易得多。 您也可以使用。bak与SQL服务器查询恢复数据库,例如

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

在上面的查询中,您需要记住.mdf/。LDF文件位置。 你可能会得到错误

C:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL.1\MSSQL\DATA\AdventureWorks.MDF"failed with the operating system error 3(系统无法找到指定的路径)。(Microsoft.SqlServer.SmoExtended)

因此,您需要运行Query,如下所示

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

一旦你运行上面的查询,你会得到mdf/ldf的位置使用它恢复数据库使用查询

USE MASTER
GO
RESTORE DATABASE DBASE
FROM DISK = 'D:\AdventureWorks2012.BAK'
WITH
MOVE 'DBASE' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBASE\MSSQL\DATA\DBASE.MDF',
MOVE 'DBASE_LOG' TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.DBASE\MSSQL\DATA\DBASE_1.LDF',
NOUNLOAD,  REPLACE,  NOUNLOAD,  STATS = 5
GO

来源:从SQL server中的.bak文件恢复数据库(使用&没有脚本)