Я пытаюсь написать приложение, которое будет создавать локальную базу данных, если она не найдена в папке приложения. Я запускаю этот запрос после удаления .mdf

IF EXISTS (SELECT * FROM sys.databases WHERE name = N'Test_db')
BEGIN 
     DROP DATABASE Test_db 
END

CREATE DATABASE Test_db 
ON PRIMARY (NAME=Test_db, FILENAME='...\Test_db.mdf')

Мой command.ExecuteNonQuery() выдает исключение, даже если он удаляет базу данных и создает новую. Ошибка возникает из-за части команды DROP DATABASE.

Дополнительная информация: Невозможно открыть физический файл "... \ Test_db.mdf". Ошибка операционной системы 2: «2 (Система не может найти указанный файл.)».

Ошибка активации файла. Физическое имя файла "... \ Test_db_log.ldf" может быть неправильным.

Я нашел этот вопрос, но у него нет решения проблемы.

2
Clint 14 Май 2016 в 18:21

2 ответа

Лучший ответ

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

EXEC sp_detach_db 'Test_db'
2
Clint 10 Апр 2018 в 14:00

Если вас беспокоит удаление файла, попробуйте File.Exists

if (File.Exists(pathname))
{
    // Execute your SQL
}
else
{
    // Error processing
}
0
Peter Bill 14 Май 2016 в 15:43