Как удалить (localdb) базу данных, если файл исчез

Если я запускаю SQL Server Management Studio и говорю ему подключиться к (localdb)v11.0, он знает о каждой базе данных, которую я когда-либо использовал, несмотря на то, что большинство файлов базы данных давно исчезли.

Если я попрошу его удалить одну из этих баз данных, он жалуется, что не может удалить базу данных, потому что файл базы данных отсутствует (duhhh). Итак, как я могу очистить этот беспорядок и удалить все ссылки на базы данных, чьи файлы базы данных ушел?

Боб

5 ответов


в этом случае отсоедините базу данных, а не пытаться удалить его. В SQL Management Studio щелкните правой кнопкой мыши базу данных, выберите "задачи", затем"отсоединить".


все, что вам нужно сделать, это воссоздать экземпляр, протестированный с помощью 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"

У меня была та же проблема. При проектировании БД с использованием кода сначала я просто удаляю старые DBs. В итоге в среде SQL Server Management Studio появляется несколько удаленных БД. Затем, когда я пытаюсь запросить БД, становится трудно найти правильный экземпляр БД из числа удаленных.

Как предложил IRM, я попытался отсоединить эти удаленные DBs, и для некоторых из них он отлично работает!

однако у меня еще осталось несколько. Затем я попытался "отключить" на этих DBs. Каждый время, когда я пытался перевести БД в автономный режим, среда SQL Server Management Studio разбилась. После Управления SQL-сервера студии перезапускается, ДБ не было. Поэтому попробуйте сделать "take offline", если отсоединение и удаление не работают для вас.


что я сделал:

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'

скопируйте результаты обратно в командное окно, выделите все, кроме системных баз данных, и выполните.


похоже, что он" исправил себя " (более или менее). Когда я посмотрел на (localdb)\v11.0 в SQL Server Management Studio сегодня утром все старые базы данных исчезли.

насколько я могу судить, он, должно быть, удалил свои ссылки на них, несмотря на то, что он жаловался, что не может этого сделать.

может быть, какой-то гуру SQL Server (или, по крайней мере, кто-то с небольшим практическим опытом) может добавить некоторое просветление?