“没有选择要恢复的备份集”SQL Server 2012

时间:2012-08-25 06:54:58

标签: sql-server restore sql-server-2012

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

  

未选择要恢复的备份集。

甚至没有一行更多的解释。这有什么不对?

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

22 个答案:

答案 0 :(得分:152)

我遇到了这个问题,原来我试图恢复到错误的SQL版本。如果您想了解有关正在进行的操作的更多信息,请尝试使用以下SQL恢复数据库:

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

这应该会为您提供调试此错误消息。

答案 1 :(得分:57)

我的问题最终是权限。我在开发机器上并通过Homegroup复制。不知何故,可能基于我将文件复制到的位置,权限搞砸了,而Management Studio无法读取文件。由于这是开发人员,我只是给予每个人权限到bak文件,然后可以通过GUI成功恢复。

答案 2 :(得分:22)

运行时:

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服务器上创建一个数据库并尝试从备份文件进行还原,当您执行此SSMS时,一旦您选择备份文件,它将显示一些关于它的信息,当你从较低版本的服务器打开它时,只会说“没有选择要恢复的备份集” enter image description here

如此如果您仍需要将数据移至较低版本的SQL,请检查This

答案 3 :(得分:13)

以管理员身份运行SQL Server Management Studio (右键单击&gt;以管理员身份运行),然后尝试恢复。

答案 4 :(得分:9)

我认为我并不愚蠢到混淆版本 - 但是,我没有意识到在我的新服务器上,已经安装了一个名为 SQLEXPRESS的SQL Server 2005实例即可。尝试将SSMS 2012中的SQL Server 2008 R2备份数据库还原到 SQLEXPRESS 实例时,备份集列表为空。

最终我意识到服务器上的 SQLEXPRESS 实例不是2012年的实例,而是2005年。我断开连接并连接到实际的 2012实例(在我的案例中名为 SQLEXPRESS2012 ),它(显然)有效。

答案 5 :(得分:6)

我的问题是我的用户是在Builtin-Administrators组中,而没有SQL Server上具有Sysadmin-role的用户。 我刚刚以管理员身份启动了Management Studio。这样就可以恢复数据库。

答案 6 :(得分:5)

很抱歉,但我刚刚注册,无法添加评论,所以只是复制Tyler Forsythe的答案,这正是对我有用的。

“我的问题最终成为了权限。我在开发机器上并通过Homegroup复制。不知何故,可能基于我将文件复制到的位置,权限搞砸了,而且Management Studio无法读取文件。由于这是开发人员,我只是给了每个人对bak文件的权限,然后可以通过GUI成功恢复。“ Tyler Forsythe

为了澄清,我正在恢复从2008年到2012年的备份,不同的机器(生产与本地开发)。备份是自动备份,我不需要手动创建它以使此过程正常工作。只需更改权限(每个人对本地开发机器来说都是最简单的),SSMS现在可以正确读取备份文件并恢复到我的本地开发机器。

答案 7 :(得分:5)

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

答案 8 :(得分:5)

在我的情况下,它是权限和事实,我使用“还原文件和文件组...”而不是简单地“还原数据库...”。

这有所不同。

enter image description here

答案 9 :(得分:4)

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

答案 10 :(得分:4)

对我而言,这是一个用户权限问题。 我使用sa用户登录并且工作正常。

答案 11 :(得分:3)

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

答案 12 :(得分:3)

我遇到了与SQL Server 2014相同的问题(当尝试为恢复操作找到备份文件时,Management Studio无法看到备份文件所在的文件夹)。 This thread得到了解决我问题的答案。引用:

  

可以通过Start-&gt; Control找到SQL Server服务帐户   面板 - &gt;管理工具 - &gt;服务。双击SQL Server   service-&gt;登录选项卡。您将使用&#34;本地系统帐户&#34;   或&#34;此帐号&#34;定义特定帐户。如果你正在使用   本地系统帐户,您无法引用备份   不是服务器本地的。相反,如果您已将帐户定义为   使用,这是需要访问备份文件的帐户   地点。您使用个人登录访问备份的能力   无关紧要;它是使用的SQL Server帐户,即使   你正在启动备份。您的IT人员应该能够   确定授予每个帐户的权利。

希望能有所帮助。

答案 13 :(得分:2)

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

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

简单地关闭并重新打开Sql Server Management Studio解决了它(显然是ssms.exe有句柄..)

答案 14 :(得分:1)

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

答案 15 :(得分:1)

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

enter image description here

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

所以我遵循以下步骤

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

enter image description here

答案 16 :(得分:0)

使用SQL Server 2012 Express。

我的错误(来自SQL Manager - 还原数据库对话框):

No backupset selected to be restored

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

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

我将文件移动到服务用户的Documents文件夹下,这使它能够读取我选择的所有文件 - 当时为4 - 并且错误更改为“缺少媒体集” - 然后我环顾四周另一个备份文件,当我补充说我能够恢复。

这个问题的答案帮助我找到了正确的位置并努力解决问题。

答案 17 :(得分:0)

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

答案 18 :(得分:0)

即使我在同一台计算机上备份和恢复,我也收到了相同的错误消息。

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

因此,修复方法是:确保目的地中只有1个项目&#39;框。如果有,删除所有其他。

答案 19 :(得分:0)

如果您要完全替换现有数据库,请使用 WITH REPLACE 选项:

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

答案 20 :(得分:0)

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

答案 21 :(得分:0)

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