2012-11-16 13 views
32

Wenn ich SQL Server Management Studio ausführe und sage, dass es eine Verbindung zu (localdb) \ v11.0 herstellen soll, weiß es über jede Datenbank, die ich je benutzt habe Tatsache, dass die meisten der Datenbankdateien schon lange weg sind.So löschen Sie (localdb) Datenbank, wenn die Datei nicht mehr existiert

Wenn ich eine dieser Datenbanken löschen möchte, beschwert sie sich, dass sie die Datenbank DROP nicht löschen kann, weil die Datenbankdatei verschwunden ist (duhhh). Also, wie bereinige ich dieses Chaos und lösche alle Datenbank-Referenzen, deren assistierte Datenbank-Dateien weg sind?

Bob

Antwort

29

Trennen Sie in diesem Fall die Datenbank, anstatt sie zu löschen. Klicken Sie in SQL Management Studio mit der rechten Maustaste auf die Datenbank, wählen Sie "Aufgaben" und dann "Trennen".

+4

Weird Bug in SSMS 2012, wenn Sie versuchen, dies zu tun; Wenn Sie versucht haben, eine DB zu löschen und die ursprünglich erwähnte Fehlermeldung erhalten haben, funktioniert das Fenster "Trennen" nicht mehr. Sie müssen die Verbindung trennen und erneut mit dem DB-Server verbinden, damit es wieder funktioniert. – CodingWithSpike

+0

Die Datenbank wird nicht in der Trennliste für mich angezeigt, aber sie ist immer noch auf dem Datenbankserver aufgeführt (2016) – Damien

1

Es scheint zu haben "fixed selbst" (mehr oder weniger). Als ich heute morgen in SQL Server Management Studio auf (localdb) \ v11.0 schaute, waren alle alten Datenbanken verschwunden.

So nah wie ich sagen kann, muss es seine Hinweise auf sie gelöscht haben, trotz der Tatsache, dass es beschwerte, dass es nicht so war.

Vielleicht kann ein SQL Server-Guru (oder zumindest jemand mit ein wenig praktischer Erfahrung) etwas Erleuchtung hinzufügen?

13

Ich hatte das gleiche Problem. Wenn ich DB mit Code zuerst entwerfe, entferne ich einfach alte DBs. Es endet damit, dass mehrere gelöschte Datenbanken in SQL Server Management Studio angezeigt werden. Wenn ich dann versuche, die DB abzufragen, wird es schwierig, die richtige DB-Instanz unter den Gelöschten zu finden.

Wie IRM vorgeschlagen, habe ich versucht, diese gelöschten DBs zu lösen, und für einige von ihnen funktioniert es großartig!

Allerdings habe ich noch einige übrig. Dann habe ich versucht "Offline" auf diesen DBs zu machen. Jedes Mal, wenn ich versuchte, DB offline zu schalten, stürzte das SQL Server Management Studio ab. Nach dem Neustart von SQL Server Management Studio war die Datenbank nicht mehr verfügbar. Versuchen Sie also, offline zu gehen, wenn das Trennen und Löschen nicht für Sie funktioniert.

+2

Wissenswertes: 3 Jahre später stürzt Management Studio 2014 immer noch ab! – Malachi

16

Alles, was Sie tun müssen, ist die Instanz neu zu erstellen, getestet mit SQL 2012! geht nur in Eingabeaufforderung mit Administratorrechten und Typ:

//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" 
+0

Wenn Sie eine Datenbank verwenden, müssen Sie sie mit dem nächsten Befehl stoppen: sqllocaldb stop "selected instance". – RredCat

+0

kurz für "stop" ist nur "p" –

2

Ich würde Hunderte von diesen gesammelt und Lösen einzeln sie war einfach zu verdammt langweilig.

Was ich tat:

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

Dies gab mir eine Liste der exec-Befehle:

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' 

Kopieren Sie die Ergebnisse zurück in das Befehlsfenster, markieren Sie alles andere als die Systemdatenbanken und ausführen .

Verwandte Themen