【问题标题】:How do I remove deleted databases from SSMS?如何从 SSMS 中删除已删除的数据库?
【发布时间】:2017-03-13 09:53:13
【问题描述】:

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

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

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

我尝试过的当前事情(无济于事):
1. 刷新数据库(在树的每一级)
2. 右键单击​​并删除数据库。我收到错误:

3.在给定的文件夹结构中重新创建文件(仍然无法识别)

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

【问题讨论】:

  • 这些是什么类型的数据库。以前从未见过
  • 数据库是在 Visual Studio Web 测试中使用数据源时创建的 .mdf 文件 - 但据我所知,它们实际上应该类似于大多数数据库 mdf 文件。我尝试了 Ivan 链接中的建议,但仍然收到错误消息:“无法删除数据库 ''D:\DEV\MAPPING\PERFORMANCE TESTING\TESTRESULTS\DJEFFERY_9LBPQ92 2017-02-20 15_25_52\OUT\PERFTESTDATABASE.MDF'' , 因为它不存在或者你没有权限。”
  • 试试这个场景:superuser.com/questions/737598/…
  • 恐怕还是不高兴。我忘了提到这些文件显示在 LoclDB 中(而不是默认的 SS 实例) - 所以在: (LocalDB)\MSSQLLocalDB 我不知道这是否会有所不同 - 可能不会。这些文件由 Visual Studio 负载测试软件生成。最初我认为这是因为我使用的是 .mdf 文件而不是正确的数据库,但现在尝试使用完整的数据库进行负载测试,它仍在生成这些文件。

标签: sql-server ssms


【解决方案1】:

我遇到了同样的问题。意外删除了一个数据库,无法将其从 SSMS 的列表中删除。

在 SSMS 中右键单击数据库,然后单击“删除”。忽略错误,在对话框中按“取消”。然后再次右键单击数据库,选择“策略”->“删除健康状态”。刷新实例数据库,该数据库不应该在列表中。

【讨论】:

  • 这给了我同样的权限错误,我首先删除了不存在的数据库。
【解决方案2】:

在主数据库上打开一个查询窗口,然后:

Select * from sys.databases where state_desc <> 'ONLINE'

会给你一个数据库列表。

那么对于查询结果的name列中的每个数据库,可以这样做:

drop database mydatabasename

【讨论】:

    【解决方案3】:

    我知道这是一个老问题,但我遇到了同样的问题,并在寻找解决方案时看到了这篇文章。所以加上我的两便士,以防它帮助别人。

    对我有用的解决方案是 DETACH 数据库。例如

    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

    如果您需要 DETACH 所有用户数据库,那么您可以使用类似下面的内容,这是我用来整理我创建的集群软糖的方法!

    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
    

    【讨论】:

      【解决方案4】:

      我最近找到了一个解决方案,也许它会对某人有所帮助

      如果您的数据库文件已经被删除,但 SSMS 认为该数据库仍然存在,您可以右键单击该数据库并选择“任务”>“分离”将其从列表中删除

      【讨论】:

        猜你喜欢
        • 2015-09-11
        • 1970-01-01
        • 1970-01-01
        • 2018-09-10
        • 2011-12-15
        • 2020-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多