还原Sql Server数据库BAK备份文件的三种方式及常见错误

Posted 空间的心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了还原Sql Server数据库BAK备份文件的三种方式及常见错误相关的知识,希望对你有一定的参考价值。

第一种方法,使用Sql Server Management Studio还原

这是演示的是Sql Server 2008R2版本,不同版本可能有细微差别

右键点击数据库→还原数据库

 

 在还原的源中选择源设备→点击选择框

 在指定备份中点击添加→选择具体文件→确定→确定

 勾选用于还原的备份集→这时目标数据库中会自动生成目标数据库名,在此选择即可→确定

 即可还原BAK数据库备份文件

 

 常见错误:

1.指定的转换无效

在选择具体文件的时候,我们可能会产生这个报错,导致这个的原因是BAK文件备份中的版本和高于我们的版本,需要部署更高版本的SqlServer。

2.System.Data.SqlClient.SqlError: 尚未备份数据库 "xxx" 的日志尾部

2005版本以上,在还原BAK备份文件时是不需要提前建好数据库的。所以,先选源设备,再在下拉选项中选择数据库即可。

3.3154或3159报错

 

原因和第二点一致,在选择还原文件和文件组时才会出现这两个报错

第二种方法,使用sql server语句还原

ALTER DATABASE [test] SET OFFLINE WITH ROLLBACK IMMEDIATE    --断开其他用户与数据库的连接

USE MASTER                                                                                                --这里注意要使用MASTER,以免出现待还原库被占用的情况
RESTORE DATABASE [test]                                                                          --为待还原库名
FROM 
  DISK = 'C:\\Users\\xxx\\Desktop\\exxx_zy.bak'                                                 --备份文件的位置
WITH
  MOVE 'exxx_zy'                                                                                            --数据文件逻辑名字
  TO 'C:\\Program Files\\Microsoft SQL Server\\MSSQL10_50.MSSQLSERVER\\MSSQL\\DATA\\exxx_zy.mdf',           --指定数据文件路径
  MOVE 'exxx_zy_LOG'                                                                                  --日志文件逻辑名字
  TO 'C:\\Program Files\\Microsoft SQL Server\\MSSQL10_50.MSSQLSERVER\\MSSQL\\DATA\\exxx_zy.ldf',             --指定日志文件路径
STATS = 10, REPLACE
GO

ALTER database [test] set online                                                                   --重新上线数据库

 常见错误:

1.逻辑文件 'xxx' 不是数据库 'test' 的一部分。

文件名不一定是实际的逻辑名,这个时候我们需要获取文件的逻辑名替换后再执行语句。此时执行RESTORE FILELISTONLY FROM DISK ='C:\\Users\\xxx\\Desktop\\xxx.bak'获取数据文件和日志文件的LogicalName。

2.设备'xxx.bak'上的介质簇的结构不正确。

出现这个错误代表bak文件版本高于目前Sql Server版本,需要升级

第三种方法,使用Navicat还原

这里演示的Navicat版本是16,部分版本可能不太相同

使用Navicat恢复BAK备份文件依旧需要有Sql Server,连接步骤这里省略。

选择SqlServer任意数据库→SQL Server备份→空白处鼠标右键→选择从文件还原

 选择需要还原到的数据库→添加设备→选择备份文件→确定

 勾选还原计划

选择高级→勾选WITH REPLACE→选择数据文件和日志文件存放位置(这里不选择会默认放置在之前服务器/电脑的地址)→生成SQL

 

点击还原

 

稍等片刻就还原啦

 

常见错误:

1.需要密码

其实当BAK文件版本高于当前SqlServer版本的时候,也会产生这个提示,这是因为SqlManagerUI的报错被Navicat理解成了需要密码。所以当使用Navicat还原BAK文件的时候可以和对方确认一下版本信息,避免造成误解。 

从SQL Server bak文件还原Team Foundation Server

我不小心删除了TFS 2018 Update 2中的错误项目。然后我发现我们不使用TFS的常规备份。我们只是备份数据库。

在测试服务器上,我安装了tfs并将数据库还原到SQL Server。但是,它不允许我使用这些表配置tfs。

我该怎么做才能获得数据?我不需要完美的恢复,但我想获得代码,如果可能的话,还需要工作项。即使直接从表中获取数据也没问题,但我不确定如何设置表。

答案

除非Microsoft的某些人为您提供特定的SQL脚本,否则通过将数据从一个数据库复制到另一个数据库来恢复已删除项目的任何尝试都很可能完成两件事:

  1. 打破你的TFS安装
  2. 让您处于不受支持的状态

所以不要这样做。

您需要对TFS实例进行完全还原,假设您拥有所有TFS数据库(配置和项目集合)的备份,则应该可以实现。有关如何做到这一点的大量文档。

另一答案

我在新服务器上安装了TFS 2018,并且能够使用sql备份文件。然后我导出代码,然后将其导入现有服务器。

以上是关于还原Sql Server数据库BAK备份文件的三种方式及常见错误的主要内容,如果未能解决你的问题,请参考以下文章

一个备份sql server文件.bak还原成两个数据库

SQL server 2008还原文件时遇到的问题?

从备份文件bak中识别SQL Server的版本

sql server启动服务和还原bak文件

从备份文件bak中识别SQL Server的版本

SQL Server--SQL Server数据库bak文件还原