如何从SSMS中删除已删除的数据库?

时间:2017-03-13 09:53:14

标签: sql-server ssms

我在这里遇到类似的问题:How to remove a list of accidently deleted databases from Sql Server Management Studio's tree-like list? 但是提供的解决方案并没有帮助我。

我有许多数据库.mdf文件是由VS的网络测试创建的(随后从文件夹中删除)。

我的SSMS现在塞满了.mdf数据库文件,这些文件不再存在,我无法摆脱。

List of mdf files

目前我尝试过的事情(无济于事):
1.刷新数据库(在树的每个级别)
2.右键单击并删除数据库。我收到错误:
SQLServer error message
3.在给定的文件夹结构中重新创建文件(仍然无法识别它)

如果可能,我希望避免重新安装SS。

3 个答案:

答案 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'; 

第一个参数是数据库的名称,第二个参数是“跳过检查”。如果“跳过检查”为假,则它将更新统计信息,但是由于数据库文件不再存在于磁盘上,这将变得毫无意义:)

有关参考,请参见:https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-detach-db-transact-sql?view=sql-server-ver15

如果需要分离所有用户数据库,则可以使用如下所示的内容,这就是我用来整理我创建的集群软糖的原因!

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