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