【问题标题】:How to delete (localdb) database if the file is gone如果文件消失了如何删除(localdb)数据库
【发布时间】:2012-11-16 05:28:22
【问题描述】:

如果我运行 SQL Server Management Studio,并告诉它连接到 (localdb)\v11.0,它会知道我曾经使用过的每个数据库,尽管大多数数据库文件早已不复存在。

如果我要求它删除其中一个数据库,它会抱怨它不能删除数据库,因为数据库文件已经消失了(duhhh)。那么,如何清理这些混乱并删除所有关联数据库文件已消失的数据库引用?

鲍勃

【问题讨论】:

    标签: sql-server localdb


    【解决方案1】:

    在这种情况下,分离数据库而不是尝试删除它。在 SQL Management Studio 中,右键单击数据库,选择“任务”,然后选择“分离”。

    【讨论】:

    • 当您尝试执行此操作时,SSMS 2012 中出现了奇怪的错误;如果您尝试删除数据库并收到最初提到的错误消息,则“分离”窗口将不再起作用。您需要断开并重新连接到数据库服务器以使其再次工作。
    • 数据库没有出现在我的分离列表中,但它仍然在数据库服务器中列出 (2016)
    • 这里和 Damien 一样,试图分离,分离列表中没有任何内容,我被告知“除非您选择要分离的文件,否则无法分离”
    【解决方案2】:

    您需要做的就是重新创建实例,并使用 SQL 2012 进行测试! 只需使用管理员权限进入命令提示符并输入:

    //list the instancies
    sqllocaldb i
    
    //stop selected instance
    sqllocaldb p "selected instance"
    
    //delete
    sqllocaldb d "selected instance"
    
    //recreate or create new one 
    sqllocaldb c "new instance"
    

    【讨论】:

    • 如果您使用数据库,您必须使用下一个命令停止它:sqllocaldb stop "selected instance"。
    • “stop”的缩写就是“p”
    【解决方案3】:

    我遇到了同样的问题。首先使用代码设计数据库时,我只是删除旧的数据库。它最终会在 SQL Server Management Studio 中出现多个已删除的数据库。然后当我尝试查询数据库时,很难从已删除的数据库中找到正确的数据库实例。

    正如 IRM 建议的那样,我尝试分离那些已删除的数据库,并且对于其中一些数据库来说效果很好!

    但是我还剩下几个。然后我尝试在这些数据库上“脱机”。每次我尝试使 DB 脱机时,SQL Server Management Studio 都会崩溃。 SQL Server Management Studio 重新启动后,数据库消失了。因此,如果分离和删除对您不起作用,请尝试“脱机”。

    【讨论】:

    • 有趣的事实:3 年后,Management Studio 2014 在执行此操作时仍然崩溃!
    【解决方案4】:

    我已经收集了数百个,单独分离它们实在是太乏味了。

    我做了什么:

    SELECT 'EXEC sp_detach_db ''' + name + ''''
    FROM sys.databases
    ;
    

    这给了我一个 exec 命令列表:

    EXEC sp_detach_db 'E:\...\ADATABASE.MDF'
    EXEC sp_detach_db 'E:\...\ANOTHERDATABASE.MDF'
    EXEC sp_detach_db 'E:\...\ATHIRDDATABASE.MDF'
    ....
    EXEC sp_detach_db 'master'
    EXEC sp_detach_db 'model'
    EXEC sp_detach_db 'msdb'
    EXEC sp_detach_db 'tempdb'
    

    将结果复制回命令窗口,突出显示系统数据库以外的所有内容,然后执行。

    【讨论】:

      【解决方案5】:

      这里接受的答案是分离你的服务器,但是如果你有快照你不能分离它们,你会遇到同样的问题删除它们。

      但是,您可以删除它们,方法是在 sql server 认为文件应该在的位置创建空文件,重新启动 sql server 服务,然后重试。

      如果您不确定如何找到实际位置,可以在这里找到:https://dba.stackexchange.com/questions/49811/location-of-the-mdf-file-of-the-database#:~:text=5%20Answers&text=There%20are%20few%20ways%20to,the%20Path%20and%20FileName%20columns

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多