“没有选择要还原的后翻”SQLServer2012

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

没有选择要还原的后翻。

连一句解释都没有,怎么了?

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

345551 次浏览

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

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

这应该会给出调试此程序所需的错误消息。

我以为我不会蠢到把版本混淆——然而,我没有意识到在我的新服务器上,一个名为 SQLEXPRESS的 SQL Server 2005实例从一出生就已经安装了。当尝试将 SSMS2012中的 SQLServer2008R2备份数据库恢复到 SQLEXPRESS实例时,备份集列表为空。

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

我的问题是 权限。我在一台开发机器上,通过 Homegroup 复制。不知何故,可能基于我复制文件的位置,权限被搞乱了,ManagementStudio 无法读取文件。因为这是开发人员我只是 给了每个人许可到备份文件,然后可以成功地恢复通过 GUI。

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

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

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

这个故障的另一个潜在原因似乎是谷歌硬盘。谷歌驱动器是压缩备份文件或东西,所以如果你想传输数据库备份通过谷歌驱动器,似乎你必须先压缩它。

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

BackupDiskFile: : OpenMedia: Backup device‘ X: Backups MyDatabase MyDatabase _ back _ 2014 _ 08 _ 22 _ 132234 _ 8270986。银行没有开门。操作系统错误32(该进程无法访问该文件,因为它正在被另一个进程使用。).

只需关闭和重新打开 Sql Server Management Studio 就可以解决这个问题(所以很明显,拥有句柄的是 ssms.exe)

运行 SQLServerManagementStudio作为行政人员(右键单击快捷方式/exe,然后选择“作为管理员运行”) ,然后尝试还原。

我在 SQLServer2014中遇到了同样的问题(ManagementStudio 在尝试为还原操作定位备份文件时,无法看到备份文件所在的文件夹)。这根线掌握了解决我问题的答案。语录:

可以通过 Start-> Control 找到 SQLServer 服务帐户 面板-> 管理工具-> 服务。双击 SQLServer 服务-> 登录选项卡。您可以使用“本地系统帐户” 或“此帐户”来定义特定帐户 本地系统帐户,则无法引用 如果您已将帐户定义为 使用,这是需要访问备份文件的帐户 您使用个人登录访问备份的能力 是不相关的; 使用的是 SQLServer 帐户,即使 你正在启动备份。你的 IT 人员应该能够 决定每个帐户被授予什么权利。

希望这对某人有帮助。

在我的例子中(新的 sql 服务器安装,新创建的用户) ,我的用户没有必要的权限。我以 好的的身份登录到 ManagementStudio,然后转到 Security/Logins,右键单击我的用户名 Properties,然后在 Server Roles 部分选中了 sysadmin

跑步时:

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

它给了我以下错误:

设备“ C: NorthwindDB.bak”上的媒体族形式不正确。SQLServer 无法处理此媒体族。RESTORE HEADERONLY 异常终止。(Microsoft SQL Server 错误: 3241) 引用原文

事实证明,即使源数据库和目标数据库的兼容级别相同,也不能将一个数据库从较高的 SQL 版本转换为较低的版本。 要检查 SQL 版本运行:

Select @@Version

为了看到区别,只需要在你的 来源 SQL 服务器上创建一个数据库,并尝试从备份文件恢复,当你这样做的时候,一旦你选择了备份文件,它会显示一些信息,而不是当你打开它从一个较低版本的服务器,只会说“没有选择恢复后翻” enter image description here

因此 如果您仍然需要将数据移动到较低版本的 SQL,那么请检查 这个

在我的案例中,是权限和我使用“还原文件和文件组...”而不是简单的“还原数据库...”的事实。

那就不一样了。

enter image description here

使用 SQLServer2012Express。

我的错误(来自 SQL Manager-Restore Database 对话框) :

No backupset selected to be restored

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

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

我把文件移到服务用户的“文档”文件夹下,这样它就可以读取我选择的所有文件——当时是4个——错误变成“媒体集丢失”——然后我四处寻找另一个备份文件,当我添加时,我能够恢复。

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

对我来说,这是个许可问题。我使用本地用户帐户安装 SQL 服务器,然后才加入我的公司域。后来,我尝试使用我的域帐户恢复数据库,该帐户不具备恢复 SQL 服务器数据库所需的权限。您需要修复您的域帐户的权限,并在您拥有的 SQL 服务器实例上赋予它系统管理员权限。

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

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

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

因此,解决方法是: 确保在“目的地”框中只有一个项目。如果有的话,把其他人都带走。

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

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

对我来说,是权限问题。

enter image description here

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

所以我按照下面的步骤

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

enter image description here

我也遇到过同样的问题。作为管理员运行 SSMS,然后右键单击并进行数据库恢复。应该可以。

我认为我得到了最愚蠢的理由得到这个错误的奖。在“还原数据库”对话框中,“源”下的数据库下拉列表是灰色的,我认为它是禁用的。我跳到 Destination 下面的数据库下拉列表,认为它就是源代码,并做了一个选择。这样做将显示此错误消息。