如何实现在线恢复数据库?

maxfun 2005-08-29 02:15:06
我的页面中有一个数据库备份列表,我希望用户直接点击所需备份即可完成数据库还原。

我在程序中用SqlCommand的ExecuteNonQuery()方法执行如下sql语句:
restore database landauto from disk = 'c:/XXX/XXX.bak'

但是程序报错:

System.Data.SqlClient.SqlException: 因为数据库正在使用,所以未能获得对数据库的排它访问权。 RESTORE DATABASE 操作异常终止。 at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at landauto.Database.oper_data(String sql) in c:\inetpub\wwwroot\landauto\Database.cs:line 45 at landauto.restore.DataGrid1_ItemCommand(Object source, DataGridCommandEventArgs e) in c:\inetpub\wwwroot\landauto\database\restore.aspx.cs:line 118


请问该如何处理以实现我需要的功能??
...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
maxfun 2005-08-30
  • 打赏
  • 举报
回复
搞定,散分!
human_2 2005-08-29
  • 打赏
  • 举报
回复
关闭 数据库
连接 到masetr数据库,
xiaowangtian1117 2005-08-29
  • 打赏
  • 举报
回复
恢复数据库必须没有人对数据库操作时才能恢复,如果有人正在使用系统,对数据库进行操作肯定是不行的,你可以在系统中判断一下是否要恢复数据的用户是否是唯一用户后,让此用户进行对数据库恢复
恢复程序如下:
string strSql="Alter Database ["+System_Biz.DataBaseName+"] Set Offline with Rollback immediate; ";
strSql=strSql+"RESTORE DATABASE ["+System_Biz.DataBaseName+"] FROM DISK = '"+System_Biz.RegainPath+"';";
strSql=strSql+"Alter Database ["+System_Biz.DataBaseName+"] Set OnLine With rollback Immediate";
string strconnection="server=localhost;User ID=sa;password="+System_Biz.DataBasePassword+";database=master;";

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧