我在这里遇到类似的问题:How to remove a list of accidently deleted databases from Sql Server Management Studio's tree-like list? 但是提供的解决方案并没有帮助我。
我有许多数据库.mdf文件是由VS的网络测试创建的(随后从文件夹中删除)。
我的SSMS现在塞满了.mdf数据库文件,这些文件不再存在,我无法摆脱。
目前我尝试过的事情(无济于事):
1.刷新数据库(在树的每个级别)
2.右键单击并删除数据库。我收到错误:
3.在给定的文件夹结构中重新创建文件(仍然无法识别它)
如果可能,我希望避免重新安装SS。
答案 0 :(得分:0)
我有同样的问题。意外删除了数据库,无法将其从SSMS列表中删除。
在SSMS中,右键单击数据库,然后单击“删除”。忽略该错误,在对话框中按“取消”。然后再次右键单击数据库,选择“策略”->“删除健康状态”。刷新实例数据库,该数据库不应在列表中。
答案 1 :(得分:0)
在主数据库上打开查询窗口,然后:
Select * from sys.databases where state_desc <> 'ONLINE'
将为您提供数据库列表。
然后针对查询结果的名称列中的每个数据库,执行以下操作:
drop database mydatabasename
答案 2 :(得分:0)
我知道这是一个古老的问题,但是我遇到了同样的问题,并且在寻找解决方案时遇到了这个帖子。因此,加进我的两个便士的价值,以防其他人得到帮助。
对我有用的解决方案是分离数据库。例如
EXEC sp_detach_db 'tmp8E8C', 'true';
第一个参数是数据库的名称,第二个参数是“跳过检查”。如果“跳过检查”为假,则它将更新统计信息,但是由于数据库文件不再存在于磁盘上,这将变得毫无意义:)
如果需要分离所有用户数据库,则可以使用如下所示的内容,这就是我用来整理我创建的集群软糖的原因!
WHILE EXISTS (SELECT TOP 1 [name] FROM sys.databases WHERE LEN(owner_sid) > 1)
BEGIN
DECLARE @DbName NVARCHAR(128) = (SELECT TOP 1 [name] FROM sys.databases WHERE LEN(owner_sid) > 1)
EXECUTE sp_detach_db @DbName, 'true'
END