远程备份恢复SQL Server数据库

///< 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 ' ");
        }
    }

你可能感兴趣的:(SQL Server)