首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

用asp.net代码怎样实现数据库备份和还原,该如何处理

2012-02-25 
用asp.net代码怎样实现数据库备份和还原,急急急!!!!用asp.net代码怎样实现数据库备份和还原,这个我现在已

用asp.net代码怎样实现数据库备份和还原,急急急!!!!
用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   -   管道的另一端上无任何进程。)


我自己认为可能是在还原数据库的时候把和这个数据库有关的进程都杀死了,而现在再要对数据库进行操作时,发生了这个错误,
问有没有人知道怎样解决这个问题啊,很急啊



[解决办法]
不知道 帮你顶
[解决办法]
备份完之后,要求重新登录,我的也跟你情况一样的,备份成功转到登录页面,重新登录才行
[解决办法]
我做过备份..但是还原始终没搞好..当前数据库在使用不能还原
备份就一句话就OK了
backup database 名 to disk = 'c:/sd.bak '
[解决办法]
我在还原成功的代码后加了一段
try
{
SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, "select * from administrator ");//就是一段操作数据库的代码
}
catch
{
}
[解决办法]
不错 顶一个!
[解决办法]
顶!我也遇到过,未解决。

热点排行