我为商店所有者开发了这个应用程序。我希望允许所有者使用该应用程序备份和恢复数据库。备份运行正常,但是恢复导致异常,表示 - 操作系统错误32(进程无法访问该文件,因为它正被另一个进程使用。).Restore数据库异常终止。
using(var conn = new SqlConnection(ConnectionString))
{
using(SqlCommand cmd = conn.CreateCommand())
{
string datadirectory = Path.Combine(Environment.CurrentDirectory,@"Data");
string query = @"RESTORE DATABASE""{0}""FROM DISK= '{1}' WITH REPLACE";
string query = String.Format(query,backupfile,datadirectory + "\\Database.mdf");
conn.Open();
SqlCommand command = new SqlCommand(query,conn);
command.ExecuteNonQuery();
}
}
我该如何解决这个问题?提前谢谢。
答案 0 :(得分:0)
使用完所有SQLiteConnection,SQLiteCommand和SQLiteDataReader后,就必须将其丢弃。您创建的第二个命令未正确清除。
此外,您的代码示例实际上没有任何意义。您创建一个从未使用过的命令。然后创建第二个未正确处理的命令。
答案 1 :(得分:0)
是正在阻止的还原文件吗?还是数据库本身仍在运行?
如果正在使用的是数据库,则可以将数据库设置为单用户模式。另一种选择是使数据库暂时脱机,然后再次使其联机。那应该关闭所有现有的连接。小费;使用SSMS,您几乎可以将每个命令转换成SQL脚本,例如使数据库脱机的按钮。单击“脚本”,您会得到类似“使用主数据库更改数据库[AdventureWorks] SET OFFLINE GO”的信息。
答案 2 :(得分:-1)
如果您只想测试还原,则需要先关闭sql服务。但是,请确保在此之前进行备份,以便还原最新的。