如果删除了 .mdf,则在删除 LocalDb 数据库时找不到指定的文件

Cannot find file specified when dropping LocalDb database if .mdf was deleted

我正在尝试编写一个应用程序,如果在应用程序的文件夹中找不到它,它将创建一个本地数据库。我运行这个查询在删除.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 部分。

Additional information: Unable to open the physical file "...\Test_db.mdf". Operating system error 2: "2 (The system cannot find the file specified.)".

File activation failure. The physical file name "...\Test_db_log.ldf" may be incorrect.

我找到了个问题,但是没有解决问题。

如果担心文件被删除,试试File.Exists

if (File.Exists(pathname))
{
    // Execute your SQL
}
else
{
    // Error processing
}

问题的解决方案是 sp_detach_db 因为它从服务器中删除数据库而不从文件系统中删除文件

EXEC sp_detach_db 'Test_db'