Sql server 如果文件丢失,如何删除(localdb)数据库

Sql server 如果文件丢失,如何删除(localdb)数据库,sql-server,localdb,Sql Server,Localdb,若我运行SQLServerManagementStudio,并告诉它连接到(localdb)\v11.0,它就会知道我使用过的每个数据库,尽管大多数数据库文件早已不存在 如果我要求它删除其中一个数据库,它会抱怨它无法删除数据库,因为数据库文件已丢失(duhhh)。那么,我如何清理这些混乱并删除所有其已分配数据库文件已丢失的数据库引用 Bob在这种情况下,请分离数据库,而不是尝试删除它。在SQL Management Studio中,右键单击数据库,选择“任务”,然后选择“分离”。我也遇到了同样的

若我运行SQLServerManagementStudio,并告诉它连接到(localdb)\v11.0,它就会知道我使用过的每个数据库,尽管大多数数据库文件早已不存在

如果我要求它删除其中一个数据库,它会抱怨它无法删除数据库,因为数据库文件已丢失(duhhh)。那么,我如何清理这些混乱并删除所有其已分配数据库文件已丢失的数据库引用


Bob

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

我也遇到了同样的问题。首先使用代码设计DB时,我只需删除旧的DB。它最终会在SQLServerManagementStudio中显示多个已删除的数据库。然后,当我试图查询数据库时,很难从已删除的数据库中找到正确的数据库实例

正如IRM所建议的,我尝试分离那些已删除的DBs,对于其中一些DBs来说,这非常有效


不过,我还有好几个。然后我试着在那些DBs上“离线”。每次我尝试使DB脱机时,SQLServerManagementStudio都会崩溃。SQLServerManagementStudio重新启动后,数据库消失了。因此,如果分离和删除对您不起作用,请尝试执行“脱机”。

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

我收集了成百上千个这样的东西,把它们一个一个地分开实在是太无聊了

我所做的:

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'

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

此处接受的答案是分离服务器,但是如果您有快照,则无法分离它们,并且删除它们时会遇到同样的问题

但是,您可以通过在sql server认为文件应该位于的位置创建空文件,重新启动sql server服务,然后重试来删除这些文件


如果您不确定如何找到物理位置,您可能会在这里找到:。

当您尝试这样做时,SSMS 2012中存在奇怪的错误;如果您试图删除数据库,但收到了最初提到的错误消息,“分离”窗口将不再工作。您需要断开连接并重新连接到DB服务器以使其再次工作。我的数据库没有显示在分离列表中,但它仍然在数据库服务器(2016)中列出。我和Damien在这里一样,正在尝试分离,分离列表中没有任何内容,我被告知“不,除非您选择要分离的文件,否则无法分离”如果您使用了数据库,您必须使用下一个命令停止它:sqllocaldb stop“selected instance”。缩写为“stop”只是“p”有趣的事实:3年后,Management Studio 2014在执行此操作时仍然崩溃!