如果文件消失,如何删除(localdb)数据库

时间:2012-11-16 05:28:23

标签: sql-server localdb

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

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

鲍勃

5 个答案:

答案 0 :(得分:32)

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

答案 1 :(得分:16)

您需要做的就是重新创建使用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"

答案 2 :(得分:13)

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

正如IRM建议的那样,我试图分离那些已删除的数据库,对于其中一些数据库来说,它很有效!

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

答案 3 :(得分:5)

我收集了数百件这些,并且单独拆卸它们实在太糟糕了。

我做了什么:

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'

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

答案 4 :(得分:0)

这里接受的答案是说要分离服务器,但是,如果您有快照,则不能分离它们,并且遇到删除它们的相同问题。

但是,您可以通过以下方式删除它们:在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