“未选择要还原的备份集” SQL Server 2012


150

我有一个启用了文件流的SQL Server 2012数据库。但是,当我备份它并尝试在另一台SQL Server 2012实例(在另一台计算机上)上还原它时,我仅收到以下消息:

没有选择要还原的备份集。

甚至没有一行得到更多的解释。怎么了

没有文件流的所有其他数据库都可以,并且可以成功还原。它和文件流有关吗?我应该安装修补程序或类似的东西。


1
尚未解决。似乎SQL Server配置有问题。我认为事情应该比这更容易。
Saeed Neamati 2012年

1
您可以提供用于尝试还原的T-SQL吗?
2012年

3
好吧,我正在使用SSMS的GUI。
Saeed Neamati 2012年

即使这样做,在窗口顶部附近的某个位置也应该有一个“脚本”按钮。在按照您认为要用于还原的方式设置了所有内容之后,将其击中而不是单击“确定”,它将弹出针对还原服务器运行的T-SQL。
Ben Thul 2012年

1
WS 2012 R2(工作组)上的SQL 2014 Standard(独立)对我来说也是权限问题,但必须两次重新启动才能获得权限。为了那是值得的。希望大家也能得到解决。
BaldEagle,2014年

Answers:


177

我遇到了这个问题,事实证明我试图还原到错误的SQL版本。如果您想要更多有关正在发生的事情的信息,请尝试使用以下SQL还原数据库:

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'

那应该给您错误消息您需要调试此。


使用上述SQL尝试还原时,会收到什么错误消息?
user489998

似乎可以使用T-SQL脚本还原数据库。我认为因为我们还没有备份文件流数据,所以UI无法处理它。
Saeed Neamati

1
很好,我喜欢原始SQL方法。我收到类似这样的消息:媒体集有2个媒体系列,但只提供了1个。必须提供所有成员。--这是否意味着备份源与备份目标是不同的SQL Server版本?当我尝试使用UI方法(“还原”)时,我收到消息@ topNo backupset selected to be restored.
The Red Pea'Apr


如果要完全替换现有数据库,请使用WITH REPLACE选项 RESTORE DATABASE <YourDatabase> FROM DISK='<the path to your backup file>\<YourDatabase>.bak' WITH REPLACE
Iasmini Gomes,

63

我的问题最终是权限。我在开发机上,并通过Homegroup复制。某种程度上,可能是基于我将文件复制到的位置,权限被弄乱了,Management Studio无法读取文件。由于这是开发人员,因此我仅向所有人授予了bak文件的权限,然后可以通过GUI成功还原。


最后也为我工作。我的用户名可以拥有该文件夹的权限实在是太傻了,但是要使此名称生效的唯一方法是将“所有人”组添加到该文件夹​​的权限中。太令人沮丧了,但是感谢您为我节省了时间!
hurleystylee 2013年

5
在这种情况下,完全没有有用的错误消息。这也解决了我的问题。
dodgy_coder

1
ya!一定喜欢那些不会告诉您任何错误的通用错误。当然是权限。从不同域上的sql server还原时发生在我身上。更改了.bak文件所有人的权限。之后工作正常。
Prescient

尝试从.bak文件还原数据库时遇到相同的问题,该文件是由在IIS下运行的文件上传Web服务创建的ApplicationPoolIdentity
apdevelop

26

运行时:

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'

它给了我以下错误:

设备'C:\ NorthwindDB.bak'上的媒体系列格式错误。SQL Server无法处理此媒体系列。RESTORE HEADERONLY正在异常终止。(Microsoft SQL Server,错误:3241)

事实证明,即使源数据库和目标数据库的兼容性级别相同,也无法将数据库从高级SQL版本升级到较低版本。要检查SQL版本,请运行:

Select @@Version

要了解差异,只需在 SQL Server 上创建一个数据库,然后尝试从备份文件中进行还原,当您使用SSMS进行此操作时,一旦选择了备份文件,它将显示一些有关该文件的信息,与您选择时一样从较低版本的服务器打开它,它只会显示“未选择要还原的备份集” 在此处输入图片说明

因此,如果仍然需要将数据移至较低版本的SQL,请选中This


因此,如果我从装有sql server 2014 enterprise的计算机上进行数据库备份-可以在sql server 2014 express上还原该数据库吗?
chester89'9

@ chester89我认为这取决于您数据库中具有哪种功能。以及那种备份。快速版本无法识别压缩备份。同样,如果企业版使用的是企业独有的功能,则免费版(快速版)将无法识别它。但是,如果您有一些标准,从理论上讲应该被认可。
Juan Acosta

@JuanAcosta是的,我把它们放在一起。就我而言,没有使用特定于企业的功能,因此我恢复了备份而没有出现问题
chester89,2013年

@JuanAcosta您能给我指出一个文档,该文档说Express Edition无法还原压缩备份吗?
chester89

@Chester请检查第234页的第3点。默认选项是快速版本中唯一可用的选项。books.google.com.au/...
胡安·阿科斯塔

15

以管理员身份运行SQL Server Management Studio (右键单击快捷方式/ exe,然后选择“以管理员身份运行”),然后尝试还原。


10

我以为我不够愚蠢,无法混合使用各种版本-但是,我没有意识到在新服务器上已经安装了名为的SQL Server 2005实例SQLEXPRESS。尝试将SSMS 2012中的SQL Server 2008 R2备份数据库还原到SQLEXPRESS实例时,备份集列表为空。

最终,我意识到SQLEXPRESS服务器上的实例不是2012年实例,而是2005年。我断开连接并连接到实际的 2012年实例(在我的情况下为SQLEXPRESS2012),并且(显然)可以正常工作。


2
这为我指出了正确的方向。我收到了与原始发布者相同的错误,但这是因为我试图将备份从SQL Express 2012还原到SQL Server 2008实例。可以理解,这是不可取的,不幸的是,该错误的描述性不足以解决根本问题。
LeastOne 2014年

1
哇!我从网站上安装了太多热修复程序,但该错误并没有消失。我看到了这个答案,并使用Sql Server 2012实例进行了登录,并尝试进行还原!呵呵,谢谢:)
Ali Baig 2015年

1
因此,您说您无法从完整版本还原到快速版本吗?
Zapnologica 2015年

7

我的问题是我的用户位于“内置管理员”组中,而没有SQL Server上具有Sysadmin-role的用户。我刚刚以管理员身份启动Management Studio。这样就可以还原数据库。


我使用以下文章创建了一个新的sysadmin用户(请参阅第2部分,使用单用户模式):wikihow.com/Reset-SA-Password-in-Sql-Server
Savage

6

仅供参考:我发现还原时,我需要使用相同的(SQL用户)凭据登录到SSMS。我首先尝试使用Windows身份验证帐户进行还原。


6

就我而言,这是权限,而且我使用了“还原文件和文件组...”而不是简单的“还原数据库...”这一事实。

这有所作为。

在此处输入图片说明


6

对我来说,这是一个用户权限问题。我以sa用户身份登录并正常工作。


5

对我来说,问题是.BAK文件位于服务器上的加密文件夹中。即使拥有完整的管理员权限,我也永远无法让SSMS读取文件。将.BAK移到未加密的文件夹解决了我的问题。请注意,移动文件后,您可能还必须更改实际文件的属性以删除加密(右键单击,属性,高级,然后取消选中“加密内容以保护数据”)。


3

我在SQL Server 2014中遇到了相同的问题(尝试为还原操作查找备份文件时,Management Studio无法看到备份文件所在的文件夹)。该线程提供了解决我问题的答案。引用:

可以通过“开始”->“控制面板”->“管理工具”->“服务”找到SQL Server服务帐户。双击“ SQL Server服务”->“登录”选项卡。您将使用“本地系统帐户”或“此帐户”来定义特定帐户。如果您使用的是本地系统帐户,则将无法引用非服务器本地的备份。相反,如果您已定义要使用的帐户,则该帐户需要访问备份文件位置。使用个人登录名访问备份的能力无关紧要;即使正在启动备份,也将使用SQL Server帐户。您的IT人员应该能够确定授予每个帐户哪些权利。

希望能对某人有所帮助。


感谢您在此处直接引用源代码,在不离开此页面的情况下使用该信息更加容易。
qxotk

3

在我的情况下(安装了新的sql server,新创建的用户),我的用户根本没有必要的权限。我以sa登录到Management Studio ,然后转到“安全性/登录”,右键单击我的用户名“属性”,然后在“服务器角色”部分中选中sysadmin


2

对我来说,这是因为备份文件仍被另一个进程打开。这是事件日志:

BackupDiskFile :: OpenMedia:备份设备'X:\ Backups \ MyDatabase \ MyDatabase_backup_2014_08_22_132234_8270986.bak'无法打开。操作系统错误32(该进程无法访问该文件,因为该文件正在被另一个进程使用。)。

只需关闭并重新打开Sql Server Management Studio即可解决该问题(显然是ssms.exe具有了句柄。)


1

出现此故障的另一个潜在原因似乎是Google云端硬盘。Google云端硬盘正在压缩bak文件或其他内容,因此,如果您想通过Google云端硬盘传输数据库备份,则必须先将其压缩。



1

就我而言,这是一个权限问题。

在此处输入图片说明

对于Windows用户,我使用的没有dbcreator角色。

所以我按照以下步骤

  1. 连接为saSQL Server
  2. Security在对象资源管理器中展开
  3. 扩大 Logins
  4. 右键单击有问题的Windows用户
  5. 点击属性
  6. 选择Server RolesSelect a page选项
  7. 检查dbcreator用户的角色
  8. 点击确定

在此处输入图片说明


0

使用SQL Server 2012 Express。

我的错误(来自“ SQL管理器-还原数据库”对话框):

No backupset selected to be restored

此外,列表中没有可供选择的备份集。

问题是我将5个备份文件中的1个移到了SQL Server服务登录用户没有权限的文件夹中-我试图添加该用户,但无法将NT Service \ MSSQL $ SQLEXPRESS用户添加到安全性中清单。

我将文件移到了服务用户的Documents文件夹下,这使其能够读取我选择的所有文件-当时是4个-并且错误更改为“缺少媒体集”-然后我四处寻找另一个备份文件,当我添加时,我能够还原。

这个问题的答案帮助我寻找正确的地方,并努力找到解决方案。


0

对我来说,这是一个许可问题。在加入公司域之前,我使用本地用户帐户安装了SQL Server。稍后,我尝试使用我的域帐户还原数据库,该域帐户没有还原SQL Server数据库所需的权限。您需要修复您的域帐户的权限,并为您拥有的SQL Server实例授予系统管理员权限。


0

即使我在同一台单机上备份和还原,我也会收到相同的错误消息。

问题出在这里:备份时,我在目标框中有2个项目。

因此,解决方法是:确保“目标”框中只有1个项目。删除所有其他(如果有)。


0

我遇到了同样的问题。以管理员身份运行SSMS,然后右键单击并执行数据库还原。应该管用。


0

我认为我之所以获得该奖项,是因为得到了这个错误的最愚蠢的理由。在“还原数据库”对话框中,“源”下的数据库下拉列表为灰色,我认为它已被禁用。我跳到“目标”下的数据库下拉列表,认为它是源,然后进行了选择。这样做将导致显示此错误消息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.