导航

远程备份恢复SQL Server数据库

Posted on 2007-03-10 15:15  pegger  阅读(814)  评论(1编辑  收藏  举报
///<summary>
      
///备份数据库到本地磁盘
      
///</summary>
    
public bool BackUp(string BackUpFile)
    {
        try
        {
          
//第一步:在服务器上创建临时文件夹
          ExecuteSql(@"master..xp_cmdshell 
'md C:\temp'");
          ExecuteSql(@"master..xp_cmdshell 
'del C:\temp\*.* /q'");
          
//第二步:备份数据库到服务器目录
          ExecuteSql(@"
backup database " + DataBaseName() + @" to disk='C:\temp\HSSY'");
          
//第三步:共享服务器的备份目录
          ExecuteSql(@"master..xp_cmdshell 
'net share SQLDATABACK=C:\temp'");
          
//第四步:复制服务器上的备份文件到本地
          
File.Copy(@"\\" + ServerIP() + @"\SQLDATABACK\HSSY", BackUpFile,true);
          
          
return true;
        }
        catch (System.Data.SqlClient.SqlException E)
        {
          throw new Exception(E.Message);
        }
        finally
        {
          
//第五步:取消服务器共享目录的共享
          ExecuteSql(@"master..xp_cmdshell 
'net share SQLDATABACK /delete'");
        }
    }

    
/// <summary>
    
/// 从本地磁盘恢复数据库
    
/// </summary>
    
public bool Restore(string RestoreFile)
    {
        try
        {
          
//第零步:关闭用户进程,防止其它用户正在使用数据库,导致数据恢复失败
          KillServerUser();
          
//第一步:在服务器上创建临时文件夹
          ExecuteSql(@"master..xp_cmdshell 
'md C:\temp'");
          ExecuteSql(@"master..xp_cmdshell 
'del C:\temp\*.* /q'");
          
//第二步:共享服务器的恢复目录
          ExecuteSql(@"master..xp_cmdshell 
'net share SQLRESTORE=C:\temp'");
          
//第三步:复制服务器上的备份文件到本地
          
File.Copy(RestoreFile, @"\\" + ServerIP() + @"\SQLRESTORE\HSSY",true);
          
//第四步:取消服务器共享目录的共享
          ExecuteSql(@"master..xp_cmdshell 
'net share SQLDATABACK /delete'");
          
//第五步:恢复数据库到服务器目录
          ExecuteSql(@"
restore database " + DataBaseName()+ @" from disk='C:\temp\HSSY'");
          
return true;
        }
        catch (System.Data.SqlClient.SqlException E)
        {
          throw new Exception(E.Message);
        }
        finally
        {
          
//第六步:取消服务器共享目录的共享
          
//DbHelperSQL.ExecuteSql(@"master..xp_cmdshell 'net share SQLDATABACK /delete'");
        }
    }

河南恒友科贸有限公司 
电话 :0371-53733453    传真:0371-65388972
地址:郑州市郑花路8号 E-mail:hengyousoft@QQ.com