为什么在SQL Server 2012管理工具中,“关闭现有连接到目标数据库”选项是灰色的?

67

通常我使用SQL Server 2012管理工具从"bak"文件恢复SQL Server数据库。我通过覆盖现有数据库来实现这一点。在"选项"页面中,有一个名为"关闭目标数据库的现有连接"的复选框,我大多会勾选它,因为目标数据库始终处于“正在使用”状态,即使我刚刚重新启动了MS SQL服务,我也确定没有应用程序在使用它。

然而,在我的客户计算机上,我发现关闭现有连接的复选框变灰色且没有任何信息。这是如何发生的?为什么会这样?谷歌搜索没有任何结果。


你是在尝试恢复一个还不存在的数据库吗?或者该数据库目前处于离线状态? - Aaron Bertrand
1
我编辑了我的问题以使其更加清晰。不,我尝试将一个数据库还原到一个已有的数据库中。顺便说一句,如果我先将目标数据库离线,我就能够恢复该数据库。但是以前我从来没有这样做过,"关闭现有连接"复选框为什么被禁用对我来说是个谜。 - schlingel
2
我认为这是UI的一个错误。玩了一会儿后,我设法使它变灰,但仍然“选中”。执行还原似乎这次关闭了连接。 - Chris Nevill
8个回答

144

我遇到了同样的问题。在选择要还原的源之前,我先勾选了复选框。选择完源后,复选框会变为灰色但是已经勾选,这样还原就可以正常操作。


11
好的建议。帮助了我。 - Pரதீப்
4
我认为我的问题是由于数据库在加载时使用的名称与备份时使用的名称不同造成的。(他们在测试服务器上给数据库添加后缀以表示它是测试用的数据库) - Doug Morrow
在我的情况下,数据库处于离线模式(但在树状界面上没有显示)。但是,在恢复过程之前选择复选框也会有帮助。 - Ruslan Makrenko
1
很好!在我的情况下,我试图将一个数据库还原到另一个现有的数据库上,但复选框是灰色的。应用此解决方案对我有效。首先,勾选“关闭现有连接...”,然后选择源。我正在使用SQL Server 2012。谢谢。 - Willy
4
运行得非常好。 看起来是SQL Management Studio中的一个错误。 - John Wales
显示剩余4条评论

16
在数据库上右键单击->属性->选项->将自动更新统计信息异步更改为false。这将解决关闭现有连接到目标数据库灰显的问题。 希望对您有所帮助。

这对我有用,但是更改这个设置会有什么后果吗? - fix
2
当我这样做时,由于备份源已启用该设置,因此在恢复后该设置被重新启用。 - Eris
在我的情况下,“自动异步更新统计信息”已经是false了。我将另一个选项“自动更新统计信息”改为false,然后它就起作用了。 - nPcomp
1
2020年:似乎当前的SSMS可能无法使用此功能。右键点击将数据库脱机/联机是断开连接的一种方式。无论如何,还是点个赞。 - user585968

3

如果你正在恢复的版本低于2012,例如尝试使用SSMS 2012恢复SQL Server 2005数据库,则可能会出现这种情况。


1
我和@schlingel遇到了同样的问题。我不是说你的答案是错的(我知道这可能是由于恢复不同版本的备份引起的),但对我来说情况并非如此。备份和目标服务器都是2012年版,两个数据库都设置为2012年兼容性。有什么想法吗? - Matthew Ives
2
不,我正在从2012版本恢复到2012版本。事实上,是我安装了它们 :) - schlingel

1

尝试重新启动SQL Server (MSSQLSERVER)服务并尝试还原。虽然不是一个很好的解决方案,但有时会起作用。


这似乎能够起作用的唯一原因是它会将所有人从你的数据库中踢出。更好的方法是发出 ALTER DATABASE <yourdb> SET OFFLINE WITH ROLLBACK IMMEDIATE 命令,这将在恢复过程中阻止对目标数据库的新连接。 - Dave Markle
没错,就像我说的那样 - 这不是一个好的解决方案。 - RoyBS

1

同样的情况也发生在我这里,使用2014服务器和管理工具。我可以在数据库属性/选项/状态/限制访问下将数据库设置为单用户模式。但对我而言,在还原后它自动恢复为多用户模式。


0
在我的情况下,数据库恢复失败,因为“数据库正在使用中”。为了解决这个问题,我尝试在SSMS > 恢复数据库对话框 > 选项页面中勾选“关闭现有连接到目标数据库”的复选框,但它是灰色的。我找到了如何启用它的方法(@Ehud Grand的建议),但这并没有解决问题。解决方法是打开Windows命令提示符,输入'net use'以查看所有网络连接。找到了与冲突所在服务器的连接,然后删除了该连接。我使用了这个参考链接,了解如何使用net use命令删除特定连接。

0
在SSMS 18中,我进入了“活动监视器”→“进程”,按数据库进行筛选,并终止了出现的进程。然后还原操作停止出现错误并成功完成。

-1
在从设备中选择备份文件之前,请勾选关闭目标数据库的现有连接。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接