164

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

没有选择要恢复的备份集。

甚至没有更多的解释。这里有什么问题?

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

4

21 回答 21

193

我遇到了这个问题,结果我试图恢复到错误的 SQL 版本。如果您想了解更多信息,请尝试使用以下 SQL 恢复数据库:

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

那应该会给您调试此错误所需的错误消息。

于 2012-08-28T11:40:40.093 回答
66

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

于 2012-11-09T03:11:34.073 回答
29

运行时:

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 版本。要检查 SQL 版本,请运行:

Select @@Version

要查看差异,只需在SQL 服务器上创建一个数据库并尝试从备份文件中进行还原,当您使用 SSMS 执行此操作时,一旦您选择了备份文件,它就会显示一些关于它的信息,当您拒绝从较低版本的服务器打开它,只会说“没有选择要恢复的备份集” 在此处输入图像描述

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

于 2016-01-05T15:56:26.763 回答
16

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

于 2014-09-25T20:28:02.407 回答
11

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

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

于 2012-09-11T08:21:02.037 回答
8

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

于 2014-05-12T07:09:45.427 回答
7

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

于 2014-05-22T19:05:17.797 回答
7

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

于 2017-07-04T09:43:42.437 回答
7

就我而言,这是权限以及我使用“恢复文件和文件组...”而不是简单地“恢复数据库...”的事实。

这造成了不同。

在此处输入图像描述

于 2016-01-12T14:41:35.417 回答
6

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

于 2013-09-11T22:03:07.240 回答
5

在我的情况下(新的 sql server 安装,新创建的用户)我的用户根本没有必要的权限。我以sa身份登录到 Management Studio ,然后转到 Security/Logins,右键单击我的用户名 Properties,然后在我检查的 Server Roles 部分中sysadmin

于 2015-11-23T10:14:53.787 回答
4

我在 SQL Server 2014 中遇到了同样的问题(Management Studio 在尝试查找备份文件以进行还原操作时看不到它所在的文件夹)。该线程包含解决我问题的答案。引用:

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

希望对某人有所帮助。

于 2015-01-16T13:20:18.847 回答
3

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

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

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

于 2014-08-22T20:05:11.527 回答
3

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

在此处输入图像描述

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

所以我按照以下步骤

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

在此处输入图像描述

于 2018-09-18T00:46:58.880 回答
1

此故障的另一个潜在原因似乎是 Google Drive。Google Drive 正在压缩 bak 文件或其他东西,因此如果您想通过 Google Drive 传输数据库备份,看来您必须先压缩它。

于 2014-08-15T19:13:15.937 回答
1

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

RESTORE DATABASE <YourDatabase> 
FROM DISK='<the path to your backup file>\<YourDatabase>.bak'
WITH REPLACE
于 2018-08-23T11:54:19.463 回答
0

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

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

所以解决方法是:确保“目的地”框中只有一项。如果有,请删除所有其他人。

于 2017-08-31T19:20:34.403 回答
0

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

于 2017-01-29T07:49:44.160 回答
0

我想我因最有理由得到这个错误而获奖。在“还原数据库”对话框中,“源”下的数据库下拉菜单是灰色的,我认为它已被禁用。我跳到目的地下的数据库下拉列表,认为它是源并进行了选择。这样做会导致显示此错误消息。

于 2019-01-22T15:34:44.520 回答
0

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

于 2018-10-03T18:48:17.950 回答
0

使用 SQL Server 2012 Express。

我的错误(来自 SQL 管理器 - 恢复数据库对话框):

No backupset selected to be restored

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

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

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

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

于 2016-10-13T00:16:52.183 回答