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

Bob*_*lth 35 sql-server localdb

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

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

短发

小智 32

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

  • 当您尝试执行此操作时SSMS 2012中的奇怪错误; 如果您尝试删除数据库并获得最初提到的错误消息,则"分离"窗口将不再起作用.您需要断开连接并重新连接到数据库服务器才能使其再次运行. (4认同)

Fil*_*ikj 17

您需要做的就是重新创建实例,使用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"
Run Code Online (Sandbox Code Playgroud)


Qix*_*ing 13

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

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

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

  • 有趣的事实:3年后,Management Studio 2014在执行此操作时仍然崩溃! (2认同)

Jef*_*ege 6

我已经收集了数百个这样的东西,并且单独拆卸它们实在是太愚蠢了.

我做了什么:

SELECT 'EXEC sp_detach_db ''' + name + ''''
FROM sys.databases
;
Run Code Online (Sandbox Code Playgroud)

这给了我一个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'
Run Code Online (Sandbox Code Playgroud)

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