日期:2014-05-16  浏览次数:20506 次

winform界面恢复数据库提示正在使用
要恢复的数据库为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 选项来标识该文件的有效位置。