数据库远程备份

   declare   @strsql   varchar(1000),     --执行语句  
                  @strdirname   varchar(50),--建立文件夹名  
                  @strcmd   varchar(50),         --执行命令名  
                  @strsend   varchar(1000),   --邮件发送语句  
                  @strdate   varchar(50)         --邮件发送日期  
  set   @strsql='backup   database   pubs   to   disk=''d:\backup\erp\'    
  set   @strdirname=replace(substring(convert(varchar(20),getdate(),120),1,10),'-','')  
  set   @strcmd='md   d:\backup\erp\'  
  set   @strcmd=@strcmd+@strdirname  
  --取得当天日期,格式为yyyy-mm-dd  
  set   @strdate=substring(convert(varchar(50),getdate(),120),1,10)  
  set   @strsend='sys_sendmail   ''1000@hm.com'',''213@hm.com'',''www'',''备份通知'','''+@strdate+'日数据库备份成功,感谢您的使用!'''  
  exec   xp_cmdshell   @strcmd  
  set   @strsql=@strsql+@strdirname+'\pubs.dat''with   init,nounload,noskip,noformat'  
  print   @strsql  
  exec   (@strsql)  
  backup   database   pubs   to   disk='d:\backup\erp\pubs.dat'   with   init,nounload,noskip,noformat  
  --用FTP上传到ERP服务器  
  exec   xp_cmdshell   'ftp   -s:"D:\backup\erp\ftp.txt"'  
  --操作成功后发送邮件  
  exec(@strsend)  
  if   @@error   <>   0  
  begin  
  raiserror('数据库备份发生错误,请检查设置',16,1)  
  set   @strsend='sys_sendmail   ''1000@hm.com'',''213@hm.com'',''www'',''备份通知'','''+@strdate+'日数据库备份失败,请检查设置!'''  
  exec   (@strsend)  
  end

-----------------------------------------------------------------------------------------------------------

下面还有个使用C#来实现备份的

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

转载于:https://www.cnblogs.com/myssh/archive/2009/05/05/1449227.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值