2012-11-16 9 views
32

Jeśli uruchomię program SQL Server Management Studio i polecię połączenie z (localdb) \ v11.0, to wie o każdej bazie danych, z której kiedykolwiek korzystałem, pomimo fakt, że większość plików bazy danych już dawno minęła.Jak usunąć bazę danych (localdb), jeśli plik zniknął

Jeśli poproszę o usunięcie jednej z tych baz, skarży się, że nie może spuścić bazy danych, ponieważ plik bazy danych już nie istnieje (duhhh). Jak więc posprzątać ten bałagan i usunąć wszystkie odwołania do baz danych, których pliki z bazy danych zniknęły?

Bob

Odpowiedz

29

W tej sytuacji odłącz bazę danych, a nie próbuj ją upuścić. W SQL Management Studio, kliknij prawym przyciskiem myszy bazę danych, wybierz "Zadania", a następnie "Odłącz".

+4

Dziwny błąd w SSMS 2012, kiedy próbujesz to zrobić; Jeśli próbowałeś usunąć DB i otrzymałeś pierwotnie komunikat o błędzie, to okno "Odłącz" przestanie działać. Musisz rozłączyć i ponownie połączyć się z serwerem DB, aby działał ponownie. – CodingWithSpike

+0

Baza danych nie pojawia się na liście odłączyć dla mnie, ale nadal jest wymieniony na serwerze bazy danych (2016) – Damien

1

Wydaje się, że "stałe sam" (bardziej lub mniej). Kiedy spojrzałem na (localdb) \ v11.0 w SQL Server Management Studio dziś rano, wszystkie stare bazy danych zniknęły.

Z tego co wiem, musiał usunąć swoje odniesienia do nich, mimo że narzekał, że nie może tego zrobić.

Może jakiś guru SQL Server (a przynajmniej ktoś o odrobinie praktycznego doświadczenia) może dodać oświecenia?

13

Miałem ten sam problem. Podczas projektowania DB za pomocą kodu najpierw, po prostu usuwam stare DB. Kończy się to wielokrotnym usunięciem DB pojawiającym się w SQL Server Management Studio. Następnie, gdy próbuję wykonać zapytanie do bazy danych, trudno jest znaleźć prawidłową instancję DB spośród usuniętych.

Zgodnie z sugestią IRM, próbowałem odłączyć te usunięte bloki danych, a dla niektórych z nich działa świetnie!

Jednak nadal mam kilka pozostałych. Potem próbowałem "Take off" na tych DB. Za każdym razem, gdy próbowałem zabrać DB offline, SQL Server Management Studio uległo awarii. Po ponownym uruchomieniu SQL Server Management Studio, DB zniknął. Więc spróbuj zrobić "przełączyć się w tryb offline", jeśli odłączanie i usuwanie nie działają dla ciebie.

+2

Ciekawostka: 3 lata później, Management Studio 2014 nadal ulega awarii! – Malachi

16

Wszystko, co musisz zrobić, to odtworzyć instancję testowaną przy użyciu SQL 2012! prostu pójść w wierszu polecenia z uprawnieniami administratora i wpisz:

//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

Jeśli używasz bazy danych, musisz zatrzymać ją za pomocą następującego polecenia: sqllocaldb stop "wybrane wystąpienie". – RredCat

+0

skrót od "stop" to po prostu "p" –

2

ja bym zgromadzone setki tych i odłączania ich indywidualnie po prostu zbyt cholernie nudny.

Co zrobiłem:

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

To dało mi listę poleceń 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' 

skopiować wyniki z powrotem do okna poleceń, zaznacz wszystko inne niż baz danych systemu i wykonać .

Powiązane problemy