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

时间:2016-05-14 15:21:14

标签: c# sql sql-server localdb

我正在尝试编写一个应用程序,如果在应用程序的文件夹中找不到它,则会创建一个本地数据库。我在删除.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&#34 ;.操作系统错误2:" 2(系统不能   找到指定的文件。)"。

     

文件激活失败。物理文件名   " ... \ Test_db_log.ldf"可能不正确。

我发现了this问题,但它无法解决问题。

2 个答案:

答案 0 :(得分:2)

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

EXEC sp_detach_db 'Test_db'

答案 1 :(得分:0)

如果您担心要删除的文件,请尝试File.Exists

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