要恢复的数据库为winform正在使用的数据库
DBOper.sqlconn.Open();
string singer_user = "ALTER DATABASE EmployeeDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE"; //设置要恢复的数据库为单用户模式,同时立即断开所有用户,并执行此命令
SqlCommand singer_user_com = new SqlCommand(singer_user, DBOper.sqlconn);
singer_user_com.ExecuteNonQuery();//执行该命令
string recover_str="use master restore database EmployyDB from disk='"+txtDRPath.Text+"'";
SqlCommand recover_str_com = new SqlCommand(recover_str, DBOper.sqlconn);
recover_str_com.ExecuteNonQuery(); //恢复数据库
string b = "ALTER DATABASE EmployeeDB SET MULTI_USER";//设置要恢复的数据库为单用户模式,并执行此命令
SqlCommand bcom = new SqlCommand(b, DBOper.sqlconn);
bcom.ExecuteNonQuery();
DBOper.sqlconn.Close();
错误提示:
无法覆盖文件 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\EmployeeDB.mdf'。数据库 'EmployeeDB' 正在使用该文件。
文件 'EmployeeDB' 无法还原为 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\EmployeeDB.mdf'。请使用 WITH MOVE 选项来标识该文件的有效位置。
无法覆盖文件 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\EmployeeDB_log.LDF'。数据库 'EmployeeDB' 正在使用该文件。
文件 'EmployeeDB_log' 无法还原为 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\EmployeeDB_log.LDF'。请使用 WITH MOVE 选项来标识该文件的有效位置。
在计划 RESTORE 语句时发现了问题。以前的消息提供了详细信息。
RESTORE DATABASE 正在异常终止。
已将数据库上下文更改为 'master'。
------解决方案--------------------
代码中加上: WITH MOVE
------解决方案--------------------
请使用 WITH MOVE 选项来标识该文件的有效位置。