我正在尝试编写一个应用程序,如果在应用程序的文件夹中找不到它,则会创建一个本地数据库。我在删除.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问题,但它无法解决问题。
答案 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
}