• 数据库远程备份


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

  • 相关阅读:
    数据分析 第五篇:离群点检测
    linux lsof命令详解
    ES基本查询语句教程
    Swagger详解(SpringBoot+Swagger集成)
    Elasticsearch5.0 安装问题集锦
    kafka auto.offset.reset latest earliest 详解
    干货 | Elasticsearch多表关联设计指南
    kafka auto.offset.reset latest earliest 详解
    linux sed命令
    Idea中如何使用debug操作
  • 原文地址:https://www.cnblogs.com/myssh/p/1449227.html
Copyright © 2020-2023  润新知