使用 SSMS 进行数据库还原使源数据库处于还原状态

Fra*_*ank 7 sql-server ssms restore sql-server-2016

我正在使用 SQL Server 2016(开发人员版)并希望在我的服务器实例中创建数据库的副本。我做了一个简单的备份,然后通过再次右键单击数据库-> 任务-> 恢复来恢复。

通过更改数据库的名称,数据库确实在新创建的数据库中恢复。到现在为止还挺好。但是,我开始使用的原始数据库以及我从哪里开始恢复,会处于 (Restoring...) 状态,这是无法以正常方式更改的。

当然,我知道如何在不产生此问题的情况下以不同的方式恢复数据库,并且我的原始数据库再次运行,但我的问题是:

这是正常行为吗?我想我偶然发现了一个错误。

Tom*_*m V 16

如果选中“还原前进行尾日志备份”框和“使源数据库处于还原状态”框,则这是 SSMS 中的“正常”行为

它可能不直观,默认情况下选中这些框可能不是最好的决定,但您必须取消选中“使源数据库处于恢复状态”框以避免这种行为:

在此处输入图片说明

因此,这不是错误,而是标准 SSMS 行为在更新版本中发生了变化(我相信这些选项出现在 2012 年,但我不确定)。

如果您想避免 SSMS 中出现奇怪或错误的行为,您最好的选择是使用 T-SQL 脚本执行恢复,这样即使您更改了 SSMS 版本,您也可以获得可重现的内容。

请参阅此连接项目,其中明确说明这是设计使然。

  • 从 SSMS 2012 开始,**在还原前进行尾日志备份** 和**将源数据库保留在还原状态 (WITH NORECOVERY)**。如果您按照 SQL 2012 中的描述执行还原,则默认情况下会选择这两个选项。在 **SSMS 2014** 中,这些选项在默认情况下 **not** 处于选中状态。显然,MS 已决定默认为 SSMS 2016 重新启用它。 (3认同)