用asp.net代码怎样实现数据库备份和还原,这个我现在已经实现了,代码是网上找的,代码如下:
/// <summary>
  /// 还原数据库函数
  /// </summary>
  /// <param name="strDbName">数据库名</param>
  /// <param name="strFileName">数据库备份文件的完整路径名</param>
  /// <returns></returns>
  public bool RestoreDB(string strDbName,string strFileName) 
  { 
   //PBar = pgbMain ; 
   SQLDMO.SQLServer svr = new SQLDMO.SQLServerClass() ; 
   try 
   { 
    //服务器名,数据库用户名,数据库用户名密码
    svr.Connect("localhost","sa","hai") ;
    
    SQLDMO.QueryResults qr = svr.EnumProcesses(-1) ; 
    int iColPIDNum = -1 ; 
    int iColDbName = -1 ; 
    for(int i=1;i<=qr.Columns;i++) 
    { 
     string strName = qr.get_ColumnName(i) ; 
     if (strName.ToUpper().Trim() == "SPID") 
     { 
      iColPIDNum = i ; 
     } 
     else if (strName.ToUpper().Trim() == "DBNAME") 
     { 
      iColDbName = i ; 
     } 
     if (iColPIDNum != -1 && iColDbName != -1) 
      break ; 
    } 
                //杀死使用strDbName数据库的进程
    for(int i=1;i<=qr.Rows;i++) 
    { 
     int lPID = qr.GetColumnLong(i,iColPIDNum) ; 
     string strDBName = qr.GetColumnString(i,iColDbName) ; 
     if (strDBName.ToUpper() == strDbName.ToUpper()) 
     {
      svr.KillProcess(lPID) ; 
     }
    } 
                
    SQLDMO.Restore res = new SQLDMO.RestoreClass() ; 
    res.Action = 0 ; 
    res.Files = strFileName ;     res.Database = strDbName ; 
    res.ReplaceDatabase = true ; 
    res.SQLRestore(svr) ; 
    return true ; 
   } 
   catch
   { 
    return false;
   } 
   finally 
   { 
    svr.DisConnect() ; 
   } 
  } 这是数据库还原的代码,当还原数据库成功后,我再想在这张页面上进行对数据库的操作时就会出错,错误信息如下:
在向服务器发送请求时发生传输级错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。) 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 在向服务器发送请求时发生传输级错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。)我自己认为可能是在还原数据库的时候把和这个数据库有关的进程都杀死了,而现在再要对数据库进行操作时,发生了这个错误,
问有没有人知道怎样解决这个问题啊,很急啊

解决方案 »

  1.   

    我做过备份..但是还原始终没搞好..当前数据库在使用不能还原
    备份就一句话就OK了
    backup database 名 to disk = 'c:/sd.bak'
      

  2.   

    我在还原成功的代码后加了一段
      try
                {
                    SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, "select * from administrator");//就是一段操作数据库的代码
                }
                catch
                { 
                }
      

  3.   

    在winForm中可以使用application.exit()来结束这个程序,调用还原程序,但是在asp.net中如何实现呀,如果不结束这个程序,数据库一直在使用中,还原不能成功呀