我正在尝试编写一个将在应用程序的文件夹中找不到本地数据库的应用程序。我删除.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()抛出一个异常,即使它删除了数据库并创建了一个新的数据库。错误来自DROPDATABASE命令部分。
command.ExecuteNonQuery()
DROPDATABASE
附加信息:无法打开物理文件“ … \ Test_db.mdf”。操作系统错误2:“ 2(系统找不到指定的文件。)”。 文件激活失败。物理文件名“ … \ Test_db_log.ldf”可能不正确。
附加信息:无法打开物理文件“ … \ Test_db.mdf”。操作系统错误2:“ 2(系统找不到指定的文件。)”。
文件激活失败。物理文件名“ … \ Test_db_log.ldf”可能不正确。
解决该问题的方法是,sp_detach_db因为它从服务器中删除了数据库,而没有从文件系统中删除文件。
sp_detach_db
EXEC sp_detach_db 'Test_db'